createTableStatementForModel method
Returns a table creation statement for model.
Implementation
String createTableStatementForModel(
ModelDefinition model, {
SchemaDocument? schema,
}) {
final definitions = <String>[];
final hasModelLevelPrimaryKey = model.primaryKeyFields.isNotEmpty;
for (final field in model.fields.where(
(field) => _isScalarLikeField(schema, field) && !field.isList,
)) {
definitions.add(
_columnDefinition(
field,
schema: schema,
includeInlinePrimaryKey: !hasModelLevelPrimaryKey,
),
);
}
for (final field in model.fields.where(
(field) => !_isScalarLikeField(schema, field),
)) {
final foreignKey = foreignKeyConstraintDefinitionForModel(
model,
field,
schema: schema,
);
if (foreignKey != null) {
definitions.add(foreignKey);
}
}
if (hasModelLevelPrimaryKey) {
definitions.add(
'PRIMARY KEY (${_quotedConstraintColumns(model, model.primaryKeyFields).join(', ')})',
);
}
for (final uniqueFields in model.compoundUniqueFieldSets) {
if (uniqueFields.length <= 1) {
continue;
}
definitions.add(
'UNIQUE (${_quotedConstraintColumns(model, uniqueFields).join(', ')})',
);
}
return 'CREATE TABLE IF NOT EXISTS ${_quoteIdentifier(model.databaseName)} ('
'${definitions.join(', ')}'
')';
}