TableScheme constructor

TableScheme(
  1. String name, {
  2. required String? idFieldName,
  3. required Map<String, Type> fieldsTypes,
  4. Map<String, TableFieldReference> fieldsReferencedTables = const <String, TableFieldReference>{},
  5. Iterable<TableRelationshipReference>? relationshipTables,
  6. Iterable<TableConstraint>? constraints,
  7. bool relationship = false,
})

Implementation

TableScheme(
  this.name, {
  required this.idFieldName,
  required Map<String, Type> fieldsTypes,
  Map<String, TableFieldReference> fieldsReferencedTables =
      const <String, TableFieldReference>{},
  Iterable<TableRelationshipReference>? relationshipTables,
  Iterable<TableConstraint>? constraints,
  this.relationship = false,
})  : fieldsNames = List<String>.unmodifiable(fieldsTypes.keys),
      fieldsTypes = Map.unmodifiable(fieldsTypes),
      constraints = ((constraints?.toList() ?? [])..sort()).toSet(),
      _fieldsReferencedTables = Map<String, TableFieldReference>.unmodifiable(
          fieldsReferencedTables),
      _relationshipTables = Set<TableRelationshipReference>.unmodifiable(
          relationshipTables ?? <TableRelationshipReference>[]) {
  _fieldsNamesIndexes = buildFieldsNamesIndexes(fieldsNames);
  _fieldsNamesLC = buildFieldsNamesLC(fieldsNames);
  _fieldsNamesSimple = buildFieldsNamesSimple(fieldsNames);

  for (var t in _relationshipTables) {
    if (t.sourceTable == name) {
      var l = _tableRelationshipReference.putIfAbsent(
          t.targetTable, () => <TableRelationshipReference>[]);
      l.add(t);
    }
  }

  _tableRelationshipReference.updateAll((key, value) =>
      UnmodifiableListView<TableRelationshipReference>(value));
}