checkEntityFields<O> method

  1. @override
void checkEntityFields<O>(
  1. O o,
  2. String entityName,
  3. String table, {
  4. 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);
    }
  }
}