getObjectBoxModel function

ModelDefinition getObjectBoxModel()

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

Implementation

ModelDefinition getObjectBoxModel() {
  final model = ModelInfo(
      entities: _entities,
      lastEntityId: const IdUid(7, 4451546207910243324),
      lastIndexId: const IdUid(0, 0),
      lastRelationId: const IdUid(0, 0),
      lastSequenceId: const IdUid(0, 0),
      retiredEntityUids: const [
        1905105460055970584,
        4326848862098983318,
        5646975722548021592
      ],
      retiredIndexUids: const [],
      retiredPropertyUids: const [
        7997732721906611150,
        1498064663591360504,
        9165545013072988725,
        4877729840467155073,
        6758483133818294873,
        585609381998393805,
        6642736454832914930,
        8087694414283662120,
        6820143125403607510,
        7668693127131540302,
        7408033311899592472,
        4059285666848700917,
        5710658985835394472,
        6288614738311781577,
        5739210013867628408,
        3235977672677165811
      ],
      retiredRelationUids: const [],
      modelVersion: 5,
      modelVersionParserMinimum: 5,
      version: 1);

  final bindings = <Type, EntityDefinition>{
    Contact: EntityDefinition<Contact>(
        model: _entities[0],
        toOneRelations: (Contact object) => [],
        toManyRelations: (Contact object) => {},
        getId: (Contact object) => object.id,
        setId: (Contact object, int id) {
          object.id = id;
        },
        objectToFB: (Contact object, fb.Builder fbb) {
          final userNameOffset = fbb.writeString(object.userName);
          final phoneNumberOffset = fbb.writeString(object.phoneNumber);
          fbb.startTable(6);
          fbb.addInt64(0, object.id);
          fbb.addOffset(1, userNameOffset);
          fbb.addOffset(3, phoneNumberOffset);
          fbb.addBool(4, object.isContact);
          fbb.finish(fbb.endTable());
          return object.id;
        },
        objectFromFB: (Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);

          final object = Contact(
              userName: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 6, ''),
              phoneNumber: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 10, ''),
              isContact: const fb.BoolReader()
                  .vTableGet(buffer, rootOffset, 12, false))
            ..id = const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0);

          return object;
        }),
    Message: EntityDefinition<Message>(
        model: _entities[1],
        toOneRelations: (Message object) => [],
        toManyRelations: (Message object) => {},
        getId: (Message object) => object.id,
        setId: (Message object, int id) {
          object.id = id;
        },
        objectToFB: (Message object, fb.Builder fbb) {
          final messageOffset = fbb.writeString(object.message);
          final senderPhoneNumberOffset =
              fbb.writeString(object.senderPhoneNumber);
          final receiverIdOffset = fbb.writeString(object.receiverId);
          fbb.startTable(10);
          fbb.addInt64(0, object.id);
          fbb.addOffset(4, messageOffset);
          fbb.addInt64(5, object.date?.millisecondsSinceEpoch);
          fbb.addOffset(6, senderPhoneNumberOffset);
          fbb.addOffset(8, receiverIdOffset);
          fbb.finish(fbb.endTable());
          return object.id;
        },
        objectFromFB: (Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);
          final dateValue =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 14);
          final object = Message(
              message: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 12, ''),
              receiverId: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 20, ''),
              senderPhoneNumber: const fb.StringReader(asciiOptimization: true)
                  .vTableGet(buffer, rootOffset, 16, ''),
              date: dateValue == null
                  ? null
                  : DateTime.fromMillisecondsSinceEpoch(dateValue))
            ..id = const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0);

          return object;
        }),
    Group: EntityDefinition<Group>(
        model: _entities[2],
        toOneRelations: (Group object) => [],
        toManyRelations: (Group object) => {},
        getId: (Group object) => object.id,
        setId: (Group object, int id) {
          object.id = id;
        },
        objectToFB: (Group object, fb.Builder fbb) {
          final groupIDOffset = fbb.writeString(object.groupID);
          final groupNameOffset = fbb.writeString(object.groupName);
          fbb.startTable(5);
          fbb.addInt64(0, object.id);
          fbb.addOffset(1, groupIDOffset);
          fbb.addOffset(2, groupNameOffset);
          fbb.finish(fbb.endTable());
          return object.id;
        },
        objectFromFB: (Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);

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

          return object;
        }),
    Membership: EntityDefinition<Membership>(
        model: _entities[3],
        toOneRelations: (Membership object) => [],
        toManyRelations: (Membership object) => {},
        getId: (Membership object) => object.id,
        setId: (Membership object, int id) {
          object.id = id;
        },
        objectToFB: (Membership object, fb.Builder fbb) {
          final groupIdOffset =
              object.groupId == null ? null : fbb.writeString(object.groupId!);
          final userPhoneOffset = object.userPhone == null
              ? null
              : fbb.writeString(object.userPhone!);
          fbb.startTable(4);
          fbb.addInt64(0, object.id);
          fbb.addOffset(1, groupIdOffset);
          fbb.addOffset(2, userPhoneOffset);
          fbb.finish(fbb.endTable());
          return object.id;
        },
        objectFromFB: (Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);

          final object = Membership(
              groupId: const fb.StringReader(asciiOptimization: true)
                  .vTableGetNullable(buffer, rootOffset, 6),
              userPhone: const fb.StringReader(asciiOptimization: true)
                  .vTableGetNullable(buffer, rootOffset, 8))
            ..id = const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0);

          return object;
        })
  };

  return ModelDefinition(model, bindings);
}