getObjectBoxModel function

ModelDefinition getObjectBoxModel()

ObjectBox model definition, pass it to Store - Store(getObjectBoxModel())

Implementation

ModelDefinition getObjectBoxModel() {
  final model = ModelInfo(
      entities: _entities,
      lastEntityId: const IdUid(1, 2881626965864008822),
      lastIndexId: const IdUid(1, 7356114923904760),
      lastRelationId: const IdUid(0, 0),
      lastSequenceId: const IdUid(0, 0),
      retiredEntityUids: const [],
      retiredIndexUids: const [],
      retiredPropertyUids: const [],
      retiredRelationUids: const [],
      modelVersion: 5,
      modelVersionParserMinimum: 5,
      version: 1);

  final bindings = <Type, EntityDefinition>{
    KeyValueEntity: EntityDefinition<KeyValueEntity>(
        model: _entities[0],
        toOneRelations: (KeyValueEntity object) => [],
        toManyRelations: (KeyValueEntity object) => {},
        getId: (KeyValueEntity object) => object.id,
        setId: (KeyValueEntity object, int id) {
          object.id = id;
        },
        objectToFB: (KeyValueEntity object, fb.Builder fbb) {
          final keyOffset = fbb.writeString(object.key);
          final valueOffset = fbb.writeString(object.value);
          fbb.startTable(4);
          fbb.addInt64(0, object.id);
          fbb.addOffset(1, keyOffset);
          fbb.addOffset(2, valueOffset);
          fbb.finish(fbb.endTable());
          return object.id;
        },
        objectFromFB: (Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);

          final object = KeyValueEntity(
              const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 6, ''),
              const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 8, ''),
              id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0));

          return object;
        })
  };

  return ModelDefinition(model, bindings);
}