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(2, 1869689020035618977),
lastIndexId: const obx_int.IdUid(3, 4581199378552730062),
lastRelationId: const obx_int.IdUid(0, 0),
lastSequenceId: const obx_int.IdUid(0, 0),
retiredEntityUids: const [],
retiredIndexUids: const [],
retiredPropertyUids: const [2060455086661458674, 9025783653115450628],
retiredRelationUids: const [],
modelVersion: 5,
modelVersionParserMinimum: 5,
version: 1,
);
final bindings = <Type, obx_int.EntityDefinition>{
Document: obx_int.EntityDefinition<Document>(
model: _entities[0],
toOneRelations: (Document object) => [],
toManyRelations: (Document object) => {
obx_int.RelInfo<DocumentChunk>.toOneBacklink(
4,
object.id,
(DocumentChunk srcObject) => srcObject.document,
): object.chunks,
},
getId: (Document object) => object.id,
setId: (Document object, int id) {
object.id = id;
},
objectToFB: (Document object, fb.Builder fbb) {
final fileNameOffset = fbb.writeString(object.fileName);
final filePathOffset = fbb.writeString(object.filePath);
final fileHashOffset = object.fileHash == null
? null
: fbb.writeString(object.fileHash!);
fbb.startTable(10);
fbb.addInt64(0, object.id);
fbb.addOffset(1, fileNameOffset);
fbb.addOffset(2, filePathOffset);
fbb.addInt64(4, object.createdAt.millisecondsSinceEpoch);
fbb.addInt64(5, object.updatedAt.millisecondsSinceEpoch);
fbb.addInt64(7, object.fileSize);
fbb.addOffset(8, fileHashOffset);
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 fileNameParam = const fb.StringReader(
asciiOptimization: true,
).vTableGet(buffer, rootOffset, 6, '');
final filePathParam = const fb.StringReader(
asciiOptimization: true,
).vTableGet(buffer, rootOffset, 8, '');
final createdAtParam = DateTime.fromMillisecondsSinceEpoch(
const fb.Int64Reader().vTableGet(buffer, rootOffset, 12, 0),
);
final updatedAtParam = DateTime.fromMillisecondsSinceEpoch(
const fb.Int64Reader().vTableGet(buffer, rootOffset, 14, 0),
);
final fileSizeParam = const fb.Int64Reader().vTableGetNullable(
buffer,
rootOffset,
18,
);
final fileHashParam = const fb.StringReader(
asciiOptimization: true,
).vTableGetNullable(buffer, rootOffset, 20);
final object = Document(
id: idParam,
fileName: fileNameParam,
filePath: filePathParam,
createdAt: createdAtParam,
updatedAt: updatedAtParam,
fileSize: fileSizeParam,
fileHash: fileHashParam,
);
obx_int.InternalToManyAccess.setRelInfo<Document>(
object.chunks,
store,
obx_int.RelInfo<DocumentChunk>.toOneBacklink(
4,
object.id,
(DocumentChunk srcObject) => srcObject.document,
),
);
return object;
},
),
DocumentChunk: obx_int.EntityDefinition<DocumentChunk>(
model: _entities[1],
toOneRelations: (DocumentChunk object) => [object.document],
toManyRelations: (DocumentChunk object) => {},
getId: (DocumentChunk object) => object.id,
setId: (DocumentChunk object, int id) {
object.id = id;
},
objectToFB: (DocumentChunk object, fb.Builder fbb) {
final contentOffset = fbb.writeString(object.content);
final embeddingsOffset = fbb.writeListFloat32(object.embeddings);
fbb.startTable(5);
fbb.addInt64(0, object.id);
fbb.addOffset(1, contentOffset);
fbb.addOffset(2, embeddingsOffset);
fbb.addInt64(3, object.document.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 contentParam = const fb.StringReader(
asciiOptimization: true,
).vTableGet(buffer, rootOffset, 6, '');
final embeddingsParam = const fb.ListReader<double>(
fb.Float32Reader(),
lazy: false,
).vTableGet(buffer, rootOffset, 8, []);
final object = DocumentChunk(
id: idParam,
content: contentParam,
embeddings: embeddingsParam,
);
object.document.targetId = const fb.Int64Reader().vTableGet(
buffer,
rootOffset,
10,
0,
);
object.document.attach(store);
return object;
},
),
};
return obx_int.ModelDefinition(model, bindings);
}