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;
}