checkEntityFields<O> method
void
checkEntityFields<O>(
- O o,
- String entityName,
- String table, {
- EntityHandler<
O> ? entityHandler,
override
Implementation
@override
void checkEntityFields<O>(O o, String entityName, String table,
{EntityHandler<O>? entityHandler}) {
Map<Object, Map<String, dynamic>>? map = _getTableMap(table, false);
if (map == null) return;
entityHandler ??=
getEntityHandler<O>(entityName: entityName, tableName: table);
if (entityHandler == null) {
throw StateError(
"Can't define `EntityHandler`> entityName: $entityName ; table: $table ; entityType: $O");
}
var entityId = getEntityID(o!,
entityHandler: entityHandler, entityName: entityName, tableName: table);
var fieldsEntityAnnotations =
entityHandler.getAllFieldsEntityAnnotations(o);
var uniques = fieldsEntityAnnotations?.entries
.where((e) => e.value.hasUnique)
.toList();
if (uniques == null || uniques.isEmpty) return;
for (var e in uniques) {
var field = e.key;
var value = entityHandler.getField(o, field);
if (value == null) continue;
if (_containsEntryWithConflictFieldValue(
map, entityHandler, entityId, field, value)) {
throw EntityFieldInvalid('unique', value,
fieldName: field, entityType: entityHandler.type, tableName: table);
}
}
}