createIfNotExists method
Creates the table if it does not exist already.
Implementation
@override
void createIfNotExists(
String tableName,
void Function(Blueprint table) callback,
) {
final blueprint = Blueprint(tableName);
callback(blueprint);
final columnSQLs = blueprint.columns.map(_columnToSQL).toList();
final constraints = _generateTableConstraints(blueprint, tableName);
final fullSQL = [
...columnSQLs,
...constraints,
].join(', ');
_queries.add('CREATE TABLE IF NOT EXISTS "$tableName" ($fullSQL);');
// Add Indexes
for (final column in blueprint.columns) {
if (column.isIndexed) {
_queries.add(
'CREATE INDEX IF NOT EXISTS "${tableName}_${column.name}_index" ON "$tableName" ("${column.name}");',
);
}
}
for (final idx in blueprint.indexes) {
final name = idx.name ?? '${tableName}_${idx.columns.join('_')}_index';
final cols = idx.columns.map((c) => '"$c"').join(', ');
_queries
.add('CREATE INDEX IF NOT EXISTS "$name" ON "$tableName" ($cols);');
}
}