forked from qt-creator/qt-creator
QmlDesigner: Use strict tables
Strict tables https://www.sqlite.org/stricttables.html have the advantage of providing strict columns and fix some historical mistakes like null primary keys. Change-Id: I7460e4317caafaec37102ae4181d2ed3bcea5ce4 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -2202,40 +2202,42 @@ private:
|
|||||||
|
|
||||||
void createSourcesTable(Database &database)
|
void createSourcesTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("sources");
|
table.setName("sources");
|
||||||
table.addColumn("sourceId", Sqlite::ColumnType::Integer, {Sqlite::PrimaryKey{}});
|
table.addColumn("sourceId", Sqlite::StrictColumnType::Integer, {Sqlite::PrimaryKey{}});
|
||||||
const Sqlite::Column &sourceContextIdColumn = table.addColumn(
|
const auto &sourceContextIdColumn = table.addColumn(
|
||||||
"sourceContextId",
|
"sourceContextId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::NotNull{},
|
{Sqlite::NotNull{},
|
||||||
Sqlite::ForeignKey{"sourceContexts",
|
Sqlite::ForeignKey{"sourceContexts",
|
||||||
"sourceContextId",
|
"sourceContextId",
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::Cascade}});
|
Sqlite::ForeignKeyAction::Cascade}});
|
||||||
const Sqlite::Column &sourceNameColumn = table.addColumn("sourceName");
|
const auto &sourceNameColumn = table.addColumn("sourceName",
|
||||||
|
Sqlite::StrictColumnType::Text);
|
||||||
table.addUniqueIndex({sourceContextIdColumn, sourceNameColumn});
|
table.addUniqueIndex({sourceContextIdColumn, sourceNameColumn});
|
||||||
|
|
||||||
table.initialize(database);
|
table.initialize(database);
|
||||||
}
|
}
|
||||||
|
|
||||||
void createTypesAndePropertyDeclarationsTables(
|
void createTypesAndePropertyDeclarationsTables(
|
||||||
Database &database, [[maybe_unused]] const Sqlite::Column &foreignModuleIdColumn)
|
Database &database, [[maybe_unused]] const Sqlite::StrictColumn &foreignModuleIdColumn)
|
||||||
{
|
{
|
||||||
Sqlite::Table typesTable;
|
Sqlite::StrictTable typesTable;
|
||||||
typesTable.setUseIfNotExists(true);
|
typesTable.setUseIfNotExists(true);
|
||||||
typesTable.setName("types");
|
typesTable.setName("types");
|
||||||
typesTable.addColumn("typeId", Sqlite::ColumnType::Integer, {Sqlite::PrimaryKey{}});
|
typesTable.addColumn("typeId", Sqlite::StrictColumnType::Integer, {Sqlite::PrimaryKey{}});
|
||||||
auto &sourceIdColumn = typesTable.addColumn("sourceId");
|
auto &sourceIdColumn = typesTable.addColumn("sourceId", Sqlite::StrictColumnType::Integer);
|
||||||
auto &typesNameColumn = typesTable.addColumn("name");
|
auto &typesNameColumn = typesTable.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
typesTable.addColumn("accessSemantics");
|
typesTable.addColumn("accessSemantics", Sqlite::StrictColumnType::Integer);
|
||||||
typesTable.addForeignKeyColumn("prototypeId",
|
typesTable.addForeignKeyColumn("prototypeId",
|
||||||
typesTable,
|
typesTable,
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::Restrict);
|
Sqlite::ForeignKeyAction::Restrict);
|
||||||
typesTable.addColumn("prototypeNameId");
|
typesTable.addColumn("prototypeNameId", Sqlite::StrictColumnType::Integer);
|
||||||
auto &defaultPropertyIdColumn = typesTable.addColumn("defaultPropertyId");
|
auto &defaultPropertyIdColumn = typesTable.addColumn("defaultPropertyId",
|
||||||
|
Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
typesTable.addUniqueIndex({sourceIdColumn, typesNameColumn});
|
typesTable.addUniqueIndex({sourceIdColumn, typesNameColumn});
|
||||||
typesTable.addIndex({defaultPropertyIdColumn});
|
typesTable.addIndex({defaultPropertyIdColumn});
|
||||||
@@ -2243,11 +2245,11 @@ private:
|
|||||||
typesTable.initialize(database);
|
typesTable.initialize(database);
|
||||||
|
|
||||||
{
|
{
|
||||||
Sqlite::Table propertyDeclarationTable;
|
Sqlite::StrictTable propertyDeclarationTable;
|
||||||
propertyDeclarationTable.setUseIfNotExists(true);
|
propertyDeclarationTable.setUseIfNotExists(true);
|
||||||
propertyDeclarationTable.setName("propertyDeclarations");
|
propertyDeclarationTable.setName("propertyDeclarations");
|
||||||
propertyDeclarationTable.addColumn("propertyDeclarationId",
|
propertyDeclarationTable.addColumn("propertyDeclarationId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::PrimaryKey{}});
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &typeIdColumn = propertyDeclarationTable.addColumn("typeId");
|
auto &typeIdColumn = propertyDeclarationTable.addColumn("typeId");
|
||||||
auto &nameColumn = propertyDeclarationTable.addColumn("name");
|
auto &nameColumn = propertyDeclarationTable.addColumn("name");
|
||||||
@@ -2255,8 +2257,10 @@ private:
|
|||||||
typesTable,
|
typesTable,
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::Restrict);
|
Sqlite::ForeignKeyAction::Restrict);
|
||||||
propertyDeclarationTable.addColumn("propertyTraits");
|
propertyDeclarationTable.addColumn("propertyTraits",
|
||||||
propertyDeclarationTable.addColumn("propertyImportedTypeNameId");
|
Sqlite::StrictColumnType::Integer);
|
||||||
|
propertyDeclarationTable.addColumn("propertyImportedTypeNameId",
|
||||||
|
Sqlite::StrictColumnType::Integer);
|
||||||
auto &aliasPropertyDeclarationIdColumn = propertyDeclarationTable.addForeignKeyColumn(
|
auto &aliasPropertyDeclarationIdColumn = propertyDeclarationTable.addForeignKeyColumn(
|
||||||
"aliasPropertyDeclarationId",
|
"aliasPropertyDeclarationId",
|
||||||
propertyDeclarationTable,
|
propertyDeclarationTable,
|
||||||
@@ -2279,20 +2283,24 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void createExportedTypeNamesTable(Database &database,
|
void createExportedTypeNamesTable(Database &database,
|
||||||
const Sqlite::Column &foreignModuleIdColumn)
|
const Sqlite::StrictColumn &foreignModuleIdColumn)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("exportedTypeNames");
|
table.setName("exportedTypeNames");
|
||||||
table.addColumn("exportedTypeNameId", Sqlite::ColumnType::Integer, {Sqlite::PrimaryKey{}});
|
table.addColumn("exportedTypeNameId",
|
||||||
|
Sqlite::StrictColumnType::Integer,
|
||||||
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &moduleIdColumn = table.addForeignKeyColumn("moduleId",
|
auto &moduleIdColumn = table.addForeignKeyColumn("moduleId",
|
||||||
foreignModuleIdColumn,
|
foreignModuleIdColumn,
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::NoAction);
|
Sqlite::ForeignKeyAction::NoAction);
|
||||||
auto &nameColumn = table.addColumn("name");
|
auto &nameColumn = table.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
auto &typeIdColumn = table.addColumn("typeId");
|
auto &typeIdColumn = table.addColumn("typeId", Sqlite::StrictColumnType::Integer);
|
||||||
auto &majorVersionColumn = table.addColumn("majorVersion");
|
auto &majorVersionColumn = table.addColumn("majorVersion",
|
||||||
auto &minorVersionColumn = table.addColumn("minorVersion");
|
Sqlite::StrictColumnType::Integer);
|
||||||
|
auto &minorVersionColumn = table.addColumn("minorVersion",
|
||||||
|
Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
table.addUniqueIndex({moduleIdColumn, nameColumn},
|
table.addUniqueIndex({moduleIdColumn, nameColumn},
|
||||||
"majorVersion IS NULL AND minorVersion IS NULL");
|
"majorVersion IS NULL AND minorVersion IS NULL");
|
||||||
@@ -2308,13 +2316,15 @@ private:
|
|||||||
|
|
||||||
void createImportedTypeNamesTable(Database &database)
|
void createImportedTypeNamesTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("importedTypeNames");
|
table.setName("importedTypeNames");
|
||||||
table.addColumn("importedTypeNameId", Sqlite::ColumnType::Integer, {Sqlite::PrimaryKey{}});
|
table.addColumn("importedTypeNameId",
|
||||||
|
Sqlite::StrictColumnType::Integer,
|
||||||
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &importOrSourceIdColumn = table.addColumn("importOrSourceId");
|
auto &importOrSourceIdColumn = table.addColumn("importOrSourceId");
|
||||||
auto &nameColumn = table.addColumn("name");
|
auto &nameColumn = table.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
auto &kindColumn = table.addColumn("kind");
|
auto &kindColumn = table.addColumn("kind", Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
table.addUniqueIndex({kindColumn, importOrSourceIdColumn, nameColumn});
|
table.addUniqueIndex({kindColumn, importOrSourceIdColumn, nameColumn});
|
||||||
|
|
||||||
@@ -2323,15 +2333,15 @@ private:
|
|||||||
|
|
||||||
void createEnumerationsTable(Database &database)
|
void createEnumerationsTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("enumerationDeclarations");
|
table.setName("enumerationDeclarations");
|
||||||
table.addColumn("enumerationDeclarationId",
|
table.addColumn("enumerationDeclarationId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::PrimaryKey{}});
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &typeIdColumn = table.addColumn("typeId");
|
auto &typeIdColumn = table.addColumn("typeId", Sqlite::StrictColumnType::Integer);
|
||||||
auto &nameColumn = table.addColumn("name");
|
auto &nameColumn = table.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
table.addColumn("enumeratorDeclarations");
|
table.addColumn("enumeratorDeclarations", Sqlite::StrictColumnType::Text);
|
||||||
|
|
||||||
table.addUniqueIndex({typeIdColumn, nameColumn});
|
table.addUniqueIndex({typeIdColumn, nameColumn});
|
||||||
|
|
||||||
@@ -2340,15 +2350,15 @@ private:
|
|||||||
|
|
||||||
void createFunctionsTable(Database &database)
|
void createFunctionsTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("functionDeclarations");
|
table.setName("functionDeclarations");
|
||||||
table.addColumn("functionDeclarationId",
|
table.addColumn("functionDeclarationId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::PrimaryKey{}});
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &typeIdColumn = table.addColumn("typeId");
|
auto &typeIdColumn = table.addColumn("typeId", Sqlite::StrictColumnType::Integer);
|
||||||
auto &nameColumn = table.addColumn("name");
|
auto &nameColumn = table.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
auto &signatureColumn = table.addColumn("signature");
|
auto &signatureColumn = table.addColumn("signature", Sqlite::StrictColumnType::Text);
|
||||||
table.addColumn("returnTypeName");
|
table.addColumn("returnTypeName");
|
||||||
|
|
||||||
table.addUniqueIndex({typeIdColumn, nameColumn, signatureColumn});
|
table.addUniqueIndex({typeIdColumn, nameColumn, signatureColumn});
|
||||||
@@ -2358,28 +2368,30 @@ private:
|
|||||||
|
|
||||||
void createSignalsTable(Database &database)
|
void createSignalsTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("signalDeclarations");
|
table.setName("signalDeclarations");
|
||||||
table.addColumn("signalDeclarationId", Sqlite::ColumnType::Integer, {Sqlite::PrimaryKey{}});
|
table.addColumn("signalDeclarationId",
|
||||||
auto &typeIdColumn = table.addColumn("typeId");
|
Sqlite::StrictColumnType::Integer,
|
||||||
auto &nameColumn = table.addColumn("name");
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &signatureColumn = table.addColumn("signature");
|
auto &typeIdColumn = table.addColumn("typeId", Sqlite::StrictColumnType::Integer);
|
||||||
|
auto &nameColumn = table.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
|
auto &signatureColumn = table.addColumn("signature", Sqlite::StrictColumnType::Text);
|
||||||
|
|
||||||
table.addUniqueIndex({typeIdColumn, nameColumn, signatureColumn});
|
table.addUniqueIndex({typeIdColumn, nameColumn, signatureColumn});
|
||||||
|
|
||||||
table.initialize(database);
|
table.initialize(database);
|
||||||
}
|
}
|
||||||
|
|
||||||
Sqlite::Column createModulesTable(Database &database)
|
Sqlite::StrictColumn createModulesTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("modules");
|
table.setName("modules");
|
||||||
auto &modelIdColumn = table.addColumn("moduleId",
|
auto &modelIdColumn = table.addColumn("moduleId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::PrimaryKey{}});
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &nameColumn = table.addColumn("name");
|
auto &nameColumn = table.addColumn("name", Sqlite::StrictColumnType::Text);
|
||||||
|
|
||||||
table.addUniqueIndex({nameColumn});
|
table.addUniqueIndex({nameColumn});
|
||||||
|
|
||||||
@@ -2389,36 +2401,38 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void createModuleExportedImportsTable(Database &database,
|
void createModuleExportedImportsTable(Database &database,
|
||||||
const Sqlite::Column &foreignModuleIdColumn)
|
const Sqlite::StrictColumn &foreignModuleIdColumn)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("moduleExportedImports");
|
table.setName("moduleExportedImports");
|
||||||
table.addColumn("moduleExportedImportId",
|
table.addColumn("moduleExportedImportId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::PrimaryKey{}});
|
{Sqlite::PrimaryKey{}});
|
||||||
auto &moduleIdColumn = table.addForeignKeyColumn("moduleId",
|
auto &moduleIdColumn = table.addForeignKeyColumn("moduleId",
|
||||||
foreignModuleIdColumn,
|
foreignModuleIdColumn,
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::Cascade,
|
Sqlite::ForeignKeyAction::Cascade,
|
||||||
Sqlite::Enforment::Immediate);
|
Sqlite::Enforment::Immediate);
|
||||||
auto &sourceIdColumn = table.addColumn("exportedModuleId");
|
auto &sourceIdColumn = table.addColumn("exportedModuleId",
|
||||||
table.addColumn("isAutoVersion");
|
Sqlite::StrictColumnType::Integer);
|
||||||
table.addColumn("majorVersion");
|
table.addColumn("isAutoVersion", Sqlite::StrictColumnType::Integer);
|
||||||
table.addColumn("minorVersion");
|
table.addColumn("majorVersion", Sqlite::StrictColumnType::Integer);
|
||||||
|
table.addColumn("minorVersion", Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
table.addUniqueIndex({sourceIdColumn, moduleIdColumn});
|
table.addUniqueIndex({sourceIdColumn, moduleIdColumn});
|
||||||
|
|
||||||
table.initialize(database);
|
table.initialize(database);
|
||||||
}
|
}
|
||||||
|
|
||||||
void createDocumentImportsTable(Database &database, const Sqlite::Column &foreignModuleIdColumn)
|
void createDocumentImportsTable(Database &database,
|
||||||
|
const Sqlite::StrictColumn &foreignModuleIdColumn)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("documentImports");
|
table.setName("documentImports");
|
||||||
table.addColumn("importId", Sqlite::ColumnType::Integer, {Sqlite::PrimaryKey{}});
|
table.addColumn("importId", Sqlite::StrictColumnType::Integer, {Sqlite::PrimaryKey{}});
|
||||||
auto &sourceIdColumn = table.addColumn("sourceId");
|
auto &sourceIdColumn = table.addColumn("sourceId", Sqlite::StrictColumnType::Integer);
|
||||||
auto &moduleIdColumn = table.addForeignKeyColumn("moduleId",
|
auto &moduleIdColumn = table.addForeignKeyColumn("moduleId",
|
||||||
foreignModuleIdColumn,
|
foreignModuleIdColumn,
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
@@ -2429,10 +2443,13 @@ private:
|
|||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::Cascade,
|
Sqlite::ForeignKeyAction::Cascade,
|
||||||
Sqlite::Enforment::Immediate);
|
Sqlite::Enforment::Immediate);
|
||||||
auto &kindColumn = table.addColumn("kind");
|
auto &kindColumn = table.addColumn("kind", Sqlite::StrictColumnType::Integer);
|
||||||
auto &majorVersionColumn = table.addColumn("majorVersion");
|
auto &majorVersionColumn = table.addColumn("majorVersion",
|
||||||
auto &minorVersionColumn = table.addColumn("minorVersion");
|
Sqlite::StrictColumnType::Integer);
|
||||||
auto &moduleExportedModuleIdColumn = table.addColumn("moduleExportedModuleId");
|
auto &minorVersionColumn = table.addColumn("minorVersion",
|
||||||
|
Sqlite::StrictColumnType::Integer);
|
||||||
|
auto &moduleExportedModuleIdColumn = table.addColumn("moduleExportedModuleId",
|
||||||
|
Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
table.addUniqueIndex({sourceIdColumn,
|
table.addUniqueIndex({sourceIdColumn,
|
||||||
moduleIdColumn,
|
moduleIdColumn,
|
||||||
@@ -2461,32 +2478,33 @@ private:
|
|||||||
|
|
||||||
void createFileStatusesTable(Database &database)
|
void createFileStatusesTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setName("fileStatuses");
|
table.setName("fileStatuses");
|
||||||
table.addColumn("sourceId",
|
table.addColumn("sourceId",
|
||||||
Sqlite::ColumnType::Integer,
|
Sqlite::StrictColumnType::Integer,
|
||||||
{Sqlite::PrimaryKey{},
|
{Sqlite::PrimaryKey{},
|
||||||
Sqlite::ForeignKey{"sources",
|
Sqlite::ForeignKey{"sources",
|
||||||
"sourceId",
|
"sourceId",
|
||||||
Sqlite::ForeignKeyAction::NoAction,
|
Sqlite::ForeignKeyAction::NoAction,
|
||||||
Sqlite::ForeignKeyAction::Cascade}});
|
Sqlite::ForeignKeyAction::Cascade}});
|
||||||
table.addColumn("size");
|
table.addColumn("size", Sqlite::StrictColumnType::Integer);
|
||||||
table.addColumn("lastModified");
|
table.addColumn("lastModified", Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
table.initialize(database);
|
table.initialize(database);
|
||||||
}
|
}
|
||||||
|
|
||||||
void createProjectDatasTable(Database &database)
|
void createProjectDatasTable(Database &database)
|
||||||
{
|
{
|
||||||
Sqlite::Table table;
|
Sqlite::StrictTable table;
|
||||||
table.setUseIfNotExists(true);
|
table.setUseIfNotExists(true);
|
||||||
table.setUseWithoutRowId(true);
|
table.setUseWithoutRowId(true);
|
||||||
table.setName("projectDatas");
|
table.setName("projectDatas");
|
||||||
auto &projectSourceIdColumn = table.addColumn("projectSourceId");
|
auto &projectSourceIdColumn = table.addColumn("projectSourceId",
|
||||||
auto &sourceIdColumn = table.addColumn("sourceId");
|
Sqlite::StrictColumnType::Integer);
|
||||||
table.addColumn("moduleId");
|
auto &sourceIdColumn = table.addColumn("sourceId", Sqlite::StrictColumnType::Integer);
|
||||||
table.addColumn("fileType");
|
table.addColumn("moduleId", Sqlite::StrictColumnType::Integer);
|
||||||
|
table.addColumn("fileType", Sqlite::StrictColumnType::Integer);
|
||||||
|
|
||||||
table.addPrimaryKeyContraint({projectSourceIdColumn, sourceIdColumn});
|
table.addPrimaryKeyContraint({projectSourceIdColumn, sourceIdColumn});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user