constraintsAsAlterTable method
Converts the constraints to AlterTableSQL. This helps to execute the dependente constraints.
Implementation
List<AlterTableSQL> constraintsAsAlterTable({
bool recursive = true,
bool onlyDependents = true,
}) {
var constraints = this.constraints;
if (onlyDependents) {
constraints =
constraints
.where((c) => c.referenceTables?.any((t) => t != table) ?? false)
.toList();
}
var alterTablesConstraint = <AlterTableSQL>[];
for (var c in constraints) {
var e = SQLEntry(
'ADD',
'ADD ${c.sql}',
comment: c.comment,
tables: c.tables,
columns: c.columns,
referenceTables: c.referenceTables,
);
var alterTable = AlterTableSQL(
dialect,
table,
[e],
q: q,
parentTable: table,
);
alterTablesConstraint.add(alterTable);
}
entries.removeAll(constraints);
_disposeCache();
var alterTables = this.alterTables ??= <AlterTableSQL>[];
alterTables.addAll(alterTablesConstraint);
if (recursive) {
var extraSQLs = allSQLBuilders.whereType<CreateTableSQL>().where(
(e) => !identical(e, this),
);
for (var e in extraSQLs) {
e.constraintsAsAlterTable(recursive: false);
}
}
return alterTablesConstraint;
}