EntityAnalysis<T extends Object, SYS_DB extends CrudDatabase<Object, Object>, SYS_ID extends Object> constructor

EntityAnalysis<T extends Object, SYS_DB extends CrudDatabase<Object, Object>, SYS_ID extends Object>(
  1. DogStructure<T> structure,
  2. OdmSystem<SYS_DB, SYS_ID> system
)

Implementation

EntityAnalysis(this.structure, this.system) {
  var idProperty = structure.fields
      .firstWhereOrNull((element) => element.firstAnnotationOf<Id>() != null);
  idProperty ??= structure.fields.where((element) => element.name == "id").firstOrNull;
  if (idProperty == null) {
    throw ArgumentError("Entity ${structure.typeArgument} does not have an id property");
  }
  this.idProperty = idProperty;
  idPropertyIndex = structure.fields.indexOf(idProperty);
  idPropertyName = idProperty.name;

  var opmode = system.engine.modeRegistry
      .nativeSerialization.forType(T, system.engine);
  if (opmode is! StructureNativeSerialization) {
    throw ArgumentError("Native serialization for type $T is not a structure");
  }
  nativeSerialization = opmode;
}