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,
  8. Map<String, List<String>>? indexes,
  9. Iterable<String>? uniqueIndexes,
  10. Map<String, TableEnumConstraint>? checkConstraints,
  11. String? primaryKeyIndex,
  12. Map<String, String>? indexesKinds,
})

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,
  Map<String, List<String>>? indexes,
  Iterable<String>? uniqueIndexes,
  Map<String, TableEnumConstraint>? checkConstraints,
  this.primaryKeyIndex,
  Map<String, String>? indexesKinds,
}) : checkConstraints = checkConstraints == null
         ? null
         : Map<String, TableEnumConstraint>.unmodifiable(checkConstraints),
     indexesKinds = indexesKinds == null
         ? null
         : Map<String, String>.unmodifiable(indexesKinds),
     indexes = indexes == null
         ? null
         : Map<String, List<String>>.unmodifiable(
             indexes.map((k, v) => MapEntry(k, List<String>.unmodifiable(v))),
           ),
     uniqueIndexes = uniqueIndexes == null
         ? null
         : Set<String>.unmodifiable(uniqueIndexes),
     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),
  );
}