renderAlterAddColumns method
List<String>
renderAlterAddColumns(
- String table,
- TableBlueprint changes, {
- String afterColumn = '',
- String beforeColumn = '',
override
Implementation
@override
List<String> renderAlterAddColumns(
String table,
TableBlueprint changes, {
String afterColumn = '',
String beforeColumn = '',
}) {
final statements = <String>[];
for (final col in changes.columns) {
statements.add(
'ALTER TABLE "$table" ADD COLUMN ${_renderColumn(col, false)}',
);
}
statements.addAll(_columnComments(table, changes.columns));
if (changes.primaryKey != null) {
statements.add(
'ALTER TABLE "$table" ADD PRIMARY KEY ("${changes.primaryKey}")',
);
}
for (final uc in changes.uniqueConstraints) {
final cols = uc.columns.map((c) => '"$c"').join(', ');
statements.add(
'ALTER TABLE "$table" ADD CONSTRAINT "${uc.name}" UNIQUE ($cols)',
);
}
for (final idx in changes.indexes) {
statements.addAll(renderAddIndex(table, idx));
}
for (final fk in changes.foreignKeys) {
final constraint = fk.constrained
? 'CONSTRAINT "FK_${table}_${fk.referencesTable}" '
: '';
statements.add(
'ALTER TABLE "$table" ADD ${constraint}FOREIGN KEY ("${fk.columnName}") '
'REFERENCES "${fk.referencesTable}" ("${fk.referencesColumn}") '
'ON UPDATE ${fk.onUpdate} ON DELETE ${fk.onDelete}',
);
}
return statements;
}