entityRepositoriesBuildOrder property

  1. @override
List<EntityRepository<Object>> entityRepositoriesBuildOrder
override

Implementation

@override
List<EntityRepository> get entityRepositoriesBuildOrder {
  var repositories = super.entityRepositoriesBuildOrder;

  var entityRepositoriesBuildOrderIn = _entityRepositoriesBuildOrderIn;
  var entityRepositoriesBuildOrderOut = _entityRepositoriesBuildOrderOut;

  if (entityRepositoriesBuildOrderIn != null &&
      entityRepositoriesBuildOrderOut != null &&
      entityRepositoriesBuildOrderIn.equalsElements(repositories)) {
    return entityRepositoriesBuildOrderOut.toList();
  }

  _entityRepositoriesBuildOrderIn = repositories.toList();

  var sqls = generateEntityRepositoresCreateTableSQLs(
      verbose: !DBAdapter.auxiliaryMode);

  var ordered = sqls.entries.toHierarchicalOrder().map((e) => e.key).toList();

  repositories.sort((a, b) {
    var i1 = ordered.indexOf(a);
    var i2 = ordered.indexOf(b);
    var cmp = i1.compareTo(i2);
    return cmp;
  });

  _entityRepositoriesBuildOrderOut = repositories.toList();

  return repositories;
}