getObjectBoxModel function

ModelDefinition getObjectBoxModel()

Returns the ObjectBox model definition for this project for use with obx.Store.new.

Implementation

obx_int.ModelDefinition getObjectBoxModel() {
  final model = obx_int.ModelInfo(
    entities: _entities,
    lastEntityId: const obx_int.IdUid(3, 5552132049052643258),
    lastIndexId: const obx_int.IdUid(13, 4044056724816938394),
    lastRelationId: const obx_int.IdUid(0, 0),
    lastSequenceId: const obx_int.IdUid(0, 0),
    retiredEntityUids: const [5454060788371618184],
    retiredIndexUids: const [],
    retiredPropertyUids: const [
      1193394587907611662,
      9193266036610955617,
      8774359902648244740,
      7295914250334259545,
      8954943725731155925,
      5527448626657189885,
      1947303555228418944,
    ],
    retiredRelationUids: const [],
    modelVersion: 5,
    modelVersionParserMinimum: 5,
    version: 1,
  );

  final bindings = <Type, obx_int.EntityDefinition>{
    ChunkEntity: obx_int.EntityDefinition<ChunkEntity>(
      model: _entities[0],
      toOneRelations: (ChunkEntity object) => [],
      toManyRelations: (ChunkEntity object) => {},
      getId: (ChunkEntity object) => object.id,
      setId: (ChunkEntity object, int id) {
        object.id = id;
      },
      objectToFB: (ChunkEntity object, fb.Builder fbb) {
        final chunkIdOffset = fbb.writeString(object.chunkId);
        final sourcePathOffset = fbb.writeString(object.sourcePath);
        final contentOffset = fbb.writeString(object.content);
        final typeOffset = fbb.writeString(object.type);
        final metadataJsonOffset = fbb.writeString(object.metadataJson);
        fbb.startTable(9);
        fbb.addInt64(0, object.id);
        fbb.addOffset(1, chunkIdOffset);
        fbb.addOffset(2, sourcePathOffset);
        fbb.addInt64(3, object.lineStart);
        fbb.addInt64(4, object.lineEnd);
        fbb.addOffset(5, contentOffset);
        fbb.addOffset(6, typeOffset);
        fbb.addOffset(7, metadataJsonOffset);
        fbb.finish(fbb.endTable());
        return object.id;
      },
      objectFromFB: (obx.Store store, ByteData fbData) {
        final buffer = fb.BufferContext(fbData);
        final rootOffset = buffer.derefObject(0);
        final idParam = const fb.Int64Reader().vTableGet(
          buffer,
          rootOffset,
          4,
          0,
        );
        final chunkIdParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 6, '');
        final sourcePathParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 8, '');
        final lineStartParam = const fb.Int64Reader().vTableGet(
          buffer,
          rootOffset,
          10,
          0,
        );
        final lineEndParam = const fb.Int64Reader().vTableGet(
          buffer,
          rootOffset,
          12,
          0,
        );
        final contentParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 14, '');
        final typeParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 16, '');
        final metadataJsonParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 18, '');
        final object = ChunkEntity(
          id: idParam,
          chunkId: chunkIdParam,
          sourcePath: sourcePathParam,
          lineStart: lineStartParam,
          lineEnd: lineEndParam,
          content: contentParam,
          type: typeParam,
          metadataJson: metadataJsonParam,
        );

        return object;
      },
    ),
    EmbeddingEntity: obx_int.EntityDefinition<EmbeddingEntity>(
      model: _entities[1],
      toOneRelations: (EmbeddingEntity object) => [object.chunkRelation],
      toManyRelations: (EmbeddingEntity object) => {},
      getId: (EmbeddingEntity object) => object.id,
      setId: (EmbeddingEntity object, int id) {
        object.id = id;
      },
      objectToFB: (EmbeddingEntity object, fb.Builder fbb) {
        final embeddingKeyOffset = fbb.writeString(object.embeddingKey);
        final chunkIdOffset = fbb.writeString(object.chunkId);
        final sourceOffset = fbb.writeString(object.source);
        final modelNameOffset = fbb.writeString(object.modelName);
        final vectorOffset = fbb.writeListFloat32(object.vector);
        fbb.startTable(8);
        fbb.addInt64(0, object.id);
        fbb.addOffset(1, embeddingKeyOffset);
        fbb.addOffset(2, chunkIdOffset);
        fbb.addOffset(3, sourceOffset);
        fbb.addOffset(4, modelNameOffset);
        fbb.addOffset(5, vectorOffset);
        fbb.addInt64(6, object.chunkRelation.targetId);
        fbb.finish(fbb.endTable());
        return object.id;
      },
      objectFromFB: (obx.Store store, ByteData fbData) {
        final buffer = fb.BufferContext(fbData);
        final rootOffset = buffer.derefObject(0);
        final idParam = const fb.Int64Reader().vTableGet(
          buffer,
          rootOffset,
          4,
          0,
        );
        final embeddingKeyParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 6, '');
        final chunkIdParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 8, '');
        final sourceParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 10, '');
        final modelNameParam = const fb.StringReader(
          asciiOptimization: true,
        ).vTableGet(buffer, rootOffset, 12, '');
        final vectorParam = const obx_int.Float32ListReader().vTableGet(
          buffer,
          rootOffset,
          14,
          Float32List(0),
        );
        final object = EmbeddingEntity(
          id: idParam,
          embeddingKey: embeddingKeyParam,
          chunkId: chunkIdParam,
          source: sourceParam,
          modelName: modelNameParam,
          vector: vectorParam,
        );
        object.chunkRelation.targetId = const fb.Int64Reader().vTableGet(
          buffer,
          rootOffset,
          16,
          0,
        );
        object.chunkRelation.attach(store);
        return object;
      },
    ),
  };

  return obx_int.ModelDefinition(model, bindings);
}