1import { EnvironmentQueryStore } from "@t3tools/client-runtime/state/query-persistence";
2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";
4
5import { MobileDatabase } from "../persistence/mobile-database";
6
7export const layer = Layer.effect(
8 EnvironmentQueryStore,
9 Effect.gen(function* () {
10 const database = yield* MobileDatabase;
11 return {
12 load: (environmentId, key) =>
13 database
14 .loadCache(environmentId, "pull-request", `v1:${key}`)
15 .pipe(Effect.catch(() => Effect.succeedNone)),
16 save: (environmentId, key, payload) =>
17 database
18 .saveCache(environmentId, "pull-request", `v1:${key}`, 1, payload)
19 .pipe(Effect.catch(() => Effect.logWarning("Offline query database save failed"))),
20 } satisfies NonNullable<typeof EnvironmentQueryStore.Service>;
21 }),
22);