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, 4361056355033444640),
      lastIndexId: const IdUid(0, 0),
      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>{
    CachedImageInfo: EntityDefinition<CachedImageInfo>(
        model: _entities[0],
        toOneRelations: (CachedImageInfo object) => [],
        toManyRelations: (CachedImageInfo object) => {},
        getId: (CachedImageInfo object) => object.id,
        setId: (CachedImageInfo object, int id) {
          object.id = id;
        },
        objectToFB: (CachedImageInfo object, fb.Builder fbb) {
          final imageUrlOffset = fbb.writeString(object.imageUrl);
          final cachedImageUrlOffset = fbb.writeString(object.cachedImageUrl);
          fbb.startTable(6);
          fbb.addInt64(0, object.id);
          fbb.addOffset(1, imageUrlOffset);
          fbb.addOffset(2, cachedImageUrlOffset);
          fbb.addInt64(3, object.fileSize);
          fbb.addInt64(4, object.dateCreated.millisecondsSinceEpoch);
          fbb.finish(fbb.endTable());
          return object.id;
        },
        objectFromFB: (Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);

          final object = CachedImageInfo(
              imageUrl: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 6, ''),
              cachedImageUrl: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 8, ''),
              fileSize:
                  const fb.Int64Reader().vTableGet(buffer, rootOffset, 10, 0),
              dateCreated: DateTime.fromMillisecondsSinceEpoch(
                  const fb.Int64Reader().vTableGet(buffer, rootOffset, 12, 0)),
              id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0));

          return object;
        })
  };

  return ModelDefinition(model, bindings);
}