invalidSQLsOrder method

Map<SQLBuilder, List<SQLBuilder>> invalidSQLsOrder()

Implementation

Map<SQLBuilder, List<SQLBuilder>> invalidSQLsOrder() {
  final processed = <SQLBuilder>{};

  final createTables = whereType<CreateTableSQL>().toList(growable: false);

  var invalidSQLs = <SQLBuilder, List<SQLBuilder>>{};

  for (var sql in this) {
    if (processed.add(sql)) {
      var dependentTables = sql.dependentTables;
      var dependentSQLs = dependentTables
          ?.map((t) => createTables.getCreateTable(t))
          .whereNotNull()
          .toList();

      var unprocessedDependencies =
          dependentSQLs?.where((s) => !processed.contains(s)).toList();

      if (unprocessedDependencies != null &&
          unprocessedDependencies.isNotEmpty) {
        invalidSQLs[sql] = unprocessedDependencies;
      }
    }
  }

  return invalidSQLs;
}