Revision 2fedfe76
Von Christian Ehringfeld vor etwa 10 Jahren hinzugefügt
| src/entitymanager.cpp | ||
|---|---|---|
|
QString c = toInitialize.at(var);
|
||
|
auto entity = QSharedPointer<Entity>
|
||
|
(EntityInstanceFactory::createInstance(c));
|
||
|
ok = this->createTable(entity);
|
||
|
ok = this->createTable(entity, false);
|
||
|
entities.append(entity);
|
||
|
} else {
|
||
|
qWarning() << "startup of version " << version << " failed";
|
||
|
qWarning() << "erroneous entity:" << (var == 0 ? "null, this should not happen!" : toInitialize.at(
|
||
|
var - 1));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (createIndices) {
|
||
|
if (ok) {
|
||
|
for (int i = 0; i < entities.size(); ++i) {
|
||
|
ok = this->schema->getQueryBuilder()->createRelationTables(entities.at(i));
|
||
|
if (!ok) {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (ok && createIndices) {
|
||
|
for (int i = 0; i < entities.size(); ++i) {
|
||
|
ok = this->schema->getQueryBuilder()->createIndices(entities.at(i));
|
||
|
if (!ok) {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (ok) {
|
||
| src/querybuilder.cpp | ||
|---|---|---|
|
if (!rc) {
|
||
|
QSqlQuery q = this->database->getQuery(this->createTable(tableName,
|
||
|
tableDefinition));
|
||
|
if (this->database->exec(q)) {
|
||
|
if (createRelationTables) {
|
||
|
auto relTables = this->generateRelationTables(entity);
|
||
|
auto i = relTables.constBegin();
|
||
|
while (i != relTables.constEnd()) {
|
||
|
auto query = this->database->getQuery(this->createTable(i.key(),
|
||
|
i.value()));
|
||
|
this->database->exec(query);
|
||
|
++i;
|
||
|
}
|
||
|
}
|
||
|
this->schema->getTableSchema(tableName);
|
||
|
if (this->database->exec(q) && (!createRelationTables || (createRelationTables
|
||
|
&& this->createRelationTables(entity)))) {
|
||
|
rc = true;
|
||
|
} else {
|
||
|
qWarning() << "Table " << entity->getTablename() << " could not be created.";
|
||
|
}
|
||
|
this->schema->getTableSchema(tableName);
|
||
|
}
|
||
|
}
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
bool QueryBuilder::createRelationTables(const QSharedPointer<Entity> &entity)
|
||
|
const {
|
||
|
bool ok = true;
|
||
|
auto relTables = this->generateRelationTables(entity);
|
||
|
auto i = relTables.constBegin();
|
||
|
while (i != relTables.constEnd()) {
|
||
|
auto query = this->database->getQuery(this->createTable(i.key(), i.value()));
|
||
|
if (!this->database->exec(query)) {
|
||
|
ok = false;
|
||
|
qWarning() << "Relational table for table " << entity->getTablename() <<
|
||
|
" could not be created." << " Tablename:" << i.key();
|
||
|
break;
|
||
|
}
|
||
|
++i;
|
||
|
}
|
||
|
return ok;
|
||
|
}
|
||
|
|
||
|
bool QueryBuilder::createIndices(const QSharedPointer<Entity> &entity) const {
|
||
|
bool ok = true;
|
||
|
QStringList queries = QStringList();
|
||
| src/querybuilder.h | ||
|---|---|---|
|
virtual bool createIndices(const QSharedPointer<Entity> &entity) const;
|
||
|
virtual QString createTable(const QString &tableName,
|
||
|
const QHash<QString, QString> &tableDefinition) const;
|
||
|
virtual bool createRelationTables(const QSharedPointer<Entity> &entity) const;
|
||
|
virtual QString createTableQuery(const QString &tableName,
|
||
|
const QHash<QString, QString> &tableDefinition) const;
|
||
|
virtual QString renameTable(QString tableName, QString newName) const;
|
||
Auch abrufbar als: Unified diff
ticket #582 and startup method improvement