toCreateTableSql method
Generate CREATE TABLE SQL with IF NOT EXISTS
Implementation
String toCreateTableSql(DatabaseType dbType) {
final buffer = StringBuffer();
buffer.writeln('CREATE TABLE IF NOT EXISTS $tableName (');
final columnDefs = <String>[];
// Add column definitions
for (final col in columns) {
if (col is ColumnSchema) {
columnDefs.add(' ${col.toSql(dbType)}');
}
}
// Add composite primary key if specified
if (primaryKeyColumns != null && primaryKeyColumns!.isNotEmpty) {
columnDefs.add(' PRIMARY KEY (${primaryKeyColumns!.join(', ')})');
}
// Add unique constraints
if (uniqueConstraints != null) {
for (final uc in uniqueConstraints!) {
final name = uc.name != null ? 'CONSTRAINT ${uc.name} ' : '';
columnDefs.add(' ${name}UNIQUE (${uc.columns.join(', ')})');
}
}
// Add check constraints
if (checkConstraints != null) {
for (final cc in checkConstraints!) {
final name = cc.name != null ? 'CONSTRAINT ${cc.name} ' : '';
columnDefs.add(' ${name}CHECK (${cc.expression})');
}
}
// Add foreign keys
if (foreignKeys != null) {
for (final fk in foreignKeys!) {
columnDefs.add(' ${fk.toSql(dbType)}');
}
}
buffer.writeln(columnDefs.join(',\n'));
buffer.write(')');
// Add engine for MySQL
if (dbType == DatabaseType.mysql) {
buffer.write(' ENGINE=InnoDB');
}
buffer.write(';');
return buffer.toString();
}