collectImplicitManyToManyStorages function

List<ImplicitManyToManyStorageDefinition> collectImplicitManyToManyStorages(
  1. SchemaDocument schema
)

Collects all implicit many-to-many storages declared by schema.

Implementation

List<ImplicitManyToManyStorageDefinition> collectImplicitManyToManyStorages(
  SchemaDocument schema,
) {
  final storages = <ImplicitManyToManyStorageDefinition>[];
  final seenTableNames = <String>{};

  for (final model in schema.models) {
    for (final field in model.fields) {
      final storage = resolveImplicitManyToManyStorage(
        schema: schema,
        sourceModelName: model.name,
        relationFieldName: field.name,
      );
      if (storage == null || !seenTableNames.add(storage.tableName)) {
        continue;
      }
      storages.add(storage);
    }
  }

  storages.sort((left, right) => left.tableName.compareTo(right.tableName));
  return List<ImplicitManyToManyStorageDefinition>.unmodifiable(storages);
}