getCreateTableStatement method
String
getCreateTableStatement(
)
Implementation
String getCreateTableStatement() {
final databaseDefinition = fields.map((field) {
final autoIncrement =
primaryKey.fields.contains(field) && primaryKey.autoGenerateId;
return field.getDatabaseDefinition(autoGenerate: autoIncrement);
}).toList();
final embeddedDefinition = embedded
.map((e) => e.getAllFields().map((field) {
final autoIncrement = primaryKey.fields.contains(field) &&
primaryKey.autoGenerateId;
return field.getDatabaseDefinition(
autoGenerate: autoIncrement, forceNullability: e.isNullable);
}))
.flattened;
databaseDefinition.addAll(embeddedDefinition);
final foreignKeyDefinitions =
foreignKeys.map((foreignKey) => foreignKey.getDefinition()).toList();
databaseDefinition.addAll(foreignKeyDefinitions);
final primaryKeyDefinition = _createPrimaryKeyDefinition();
if (primaryKeyDefinition != null) {
databaseDefinition.add(primaryKeyDefinition);
}
final withoutRowidClause = withoutRowid ? ' WITHOUT ROWID' : '';
if (fts == null) {
return 'CREATE TABLE IF NOT EXISTS `$name` (${databaseDefinition.join(', ')})$withoutRowidClause';
} else {
if (fts!.tableCreateOption().isNotEmpty) {
databaseDefinition.add('${fts!.tableCreateOption()}');
}
return 'CREATE VIRTUAL TABLE IF NOT EXISTS `$name` ${fts!.usingOption}(${databaseDefinition.join(', ')})';
}
}