toGraph method

Graph<SQLBuilder> toGraph()

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