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, 3591291115973887432),
      lastIndexId: const obx_int.IdUid(1, 8984911200634127343),
      lastRelationId: const obx_int.IdUid(0, 0),
      lastSequenceId: const obx_int.IdUid(0, 0),
      retiredEntityUids: const [],
      retiredIndexUids: const [],
      retiredPropertyUids: const [],
      retiredRelationUids: const [],
      modelVersion: 5,
      modelVersionParserMinimum: 5,
      version: 1);

  final bindings = <Type, obx_int.EntityDefinition>{
    CacheControlBox: obx_int.EntityDefinition<CacheControlBox>(
        model: _entities[0],
        toOneRelations: (CacheControlBox object) => [],
        toManyRelations: (CacheControlBox object) => {},
        getId: (CacheControlBox object) => object.id,
        setId: (CacheControlBox object, int id) {
          object.id = id;
        },
        objectToFB: (CacheControlBox object, fb.Builder fbb) {
          final privacyOffset =
              object.privacy == null ? null : fbb.writeString(object.privacy!);
          final otherOffset = object.other == null
              ? null
              : fbb.writeList(
                  object.other!.map(fbb.writeString).toList(growable: false));
          fbb.startTable(10);
          fbb.addInt64(0, object.id ?? 0);
          fbb.addInt64(1, object.maxAge);
          fbb.addOffset(2, privacyOffset);
          fbb.addBool(3, object.noCache);
          fbb.addBool(4, object.noStore);
          fbb.addOffset(5, otherOffset);
          fbb.addInt64(6, object.maxStale);
          fbb.addInt64(7, object.minFresh);
          fbb.addBool(8, object.mustRevalidate);
          fbb.finish(fbb.endTable());
          return object.id ?? 0;
        },
        objectFromFB: (obx.Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);
          final idParam =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 4);
          final maxAgeParam =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 6);
          final privacyParam = const fb.StringReader(asciiOptimization: true)
              .vTableGetNullable(buffer, rootOffset, 8);
          final noCacheParam =
              const fb.BoolReader().vTableGetNullable(buffer, rootOffset, 10);
          final noStoreParam =
              const fb.BoolReader().vTableGetNullable(buffer, rootOffset, 12);
          final otherParam = const fb.ListReader<String>(
                  fb.StringReader(asciiOptimization: true),
                  lazy: false)
              .vTableGetNullable(buffer, rootOffset, 14);
          final object = CacheControlBox(
              id: idParam,
              maxAge: maxAgeParam,
              privacy: privacyParam,
              noCache: noCacheParam,
              noStore: noStoreParam,
              other: otherParam)
            ..maxStale =
                const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 16)
            ..minFresh =
                const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 18)
            ..mustRevalidate =
                const fb.BoolReader().vTableGetNullable(buffer, rootOffset, 20);

          return object;
        }),
    CacheResponseBox: obx_int.EntityDefinition<CacheResponseBox>(
        model: _entities[1],
        toOneRelations: (CacheResponseBox object) => [object.cacheControl],
        toManyRelations: (CacheResponseBox object) => {},
        getId: (CacheResponseBox object) => object.id,
        setId: (CacheResponseBox object, int id) {
          object.id = id;
        },
        objectToFB: (CacheResponseBox object, fb.Builder fbb) {
          final keyOffset = fbb.writeString(object.key);
          final contentOffset = object.content == null
              ? null
              : fbb.writeListInt8(object.content!);
          final eTagOffset =
              object.eTag == null ? null : fbb.writeString(object.eTag!);
          final headersOffset = object.headers == null
              ? null
              : fbb.writeListInt8(object.headers!);
          final lastModifiedOffset = object.lastModified == null
              ? null
              : fbb.writeString(object.lastModified!);
          final urlOffset = fbb.writeString(object.url);
          fbb.startTable(16);
          fbb.addInt64(0, object.id ?? 0);
          fbb.addOffset(1, keyOffset);
          fbb.addOffset(2, contentOffset);
          fbb.addInt64(3, object.date?.millisecondsSinceEpoch);
          fbb.addOffset(4, eTagOffset);
          fbb.addInt64(5, object.expires?.millisecondsSinceEpoch);
          fbb.addOffset(6, headersOffset);
          fbb.addOffset(7, lastModifiedOffset);
          fbb.addInt64(8, object.maxStale?.millisecondsSinceEpoch);
          fbb.addInt64(9, object.responseDate.millisecondsSinceEpoch);
          fbb.addOffset(10, urlOffset);
          fbb.addInt64(11, object.priority);
          fbb.addInt64(12, object.cacheControl.targetId);
          fbb.addInt64(13, object.requestDate.millisecondsSinceEpoch);
          fbb.addInt64(14, object.statusCode);
          fbb.finish(fbb.endTable());
          return object.id ?? 0;
        },
        objectFromFB: (obx.Store store, ByteData fbData) {
          final buffer = fb.BufferContext(fbData);
          final rootOffset = buffer.derefObject(0);
          final dateValue =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 10);
          final expiresValue =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 14);
          final maxStaleValue =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 20);
          final keyParam = const fb.StringReader(asciiOptimization: true)
              .vTableGet(buffer, rootOffset, 6, '');
          final contentParam = const fb.Uint8ListReader(lazy: false)
              .vTableGetNullable(buffer, rootOffset, 8) as Uint8List?;
          final dateParam = dateValue == null
              ? null
              : DateTime.fromMillisecondsSinceEpoch(dateValue);
          final eTagParam = const fb.StringReader(asciiOptimization: true)
              .vTableGetNullable(buffer, rootOffset, 12);
          final expiresParam = expiresValue == null
              ? null
              : DateTime.fromMillisecondsSinceEpoch(expiresValue);
          final headersParam = const fb.Uint8ListReader(lazy: false)
              .vTableGetNullable(buffer, rootOffset, 16) as Uint8List?;
          final lastModifiedParam =
              const fb.StringReader(asciiOptimization: true)
                  .vTableGetNullable(buffer, rootOffset, 18);
          final maxStaleParam = maxStaleValue == null
              ? null
              : DateTime.fromMillisecondsSinceEpoch(maxStaleValue);
          final requestDateParam = DateTime.fromMillisecondsSinceEpoch(
              const fb.Int64Reader().vTableGet(buffer, rootOffset, 30, 0));
          final priorityParam =
              const fb.Int64Reader().vTableGet(buffer, rootOffset, 26, 0);
          final responseDateParam = DateTime.fromMillisecondsSinceEpoch(
              const fb.Int64Reader().vTableGet(buffer, rootOffset, 22, 0));
          final urlParam = const fb.StringReader(asciiOptimization: true)
              .vTableGet(buffer, rootOffset, 24, '');
          final statusCodeParam =
              const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 32);
          final object = CacheResponseBox(
              key: keyParam,
              content: contentParam,
              date: dateParam,
              eTag: eTagParam,
              expires: expiresParam,
              headers: headersParam,
              lastModified: lastModifiedParam,
              maxStale: maxStaleParam,
              requestDate: requestDateParam,
              priority: priorityParam,
              responseDate: responseDateParam,
              url: urlParam,
              statusCode: statusCodeParam)
            ..id =
                const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 4);
          object.cacheControl.targetId =
              const fb.Int64Reader().vTableGet(buffer, rootOffset, 28, 0);
          object.cacheControl.attach(store);
          return object;
        })
  };

  return obx_int.ModelDefinition(model, bindings);
}