toGraph method
Converts this SQLBuilder list to a Graph
.
Implementation
Graph<SQLBuilder> toGraph() {
final graph = Graph<SQLBuilder>();
var sqlsByMainTable = groupBy(this, (sql) => sql.mainTable);
SQLBuilder? getCreateTable(String table) =>
sqlsByMainTable[table]?.whereType<CreateTableSQL>().firstOrNull;
List<SQLBuilder> getCreateTables(List<String>? tables) =>
tables?.map(getCreateTable).whereNotNull().toList() ?? [];
graph.populate(
this,
inputsProvider: (step, sql) => getCreateTables(sql.dependentTables),
outputsProvider: (step, sql) => [
...?sql.extraSQLBuilders,
//if (sql is CreateTableSQL) ...getCreateTables(sql.relationshipsTables)
],
);
return graph;
}