TableScheme constructor
TableScheme(
- String name, {
- required String? idFieldName,
- required Map<
String, Type> fieldsTypes, - Map<
String, TableFieldReference> fieldsReferencedTables = const <String, TableFieldReference>{}, - Iterable<
TableRelationshipReference> ? relationshipTables, - Iterable<
TableConstraint> ? constraints, - bool relationship = false,
- Map<
String, List< ? indexes,String> > - Iterable<
String> ? uniqueIndexes, - Map<
String, TableEnumConstraint> ? checkConstraints, - String? primaryKeyIndex,
- 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),
);
}