From 636beedd13e9e9f0704c6167999c0ed21b6ef663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 18 Jan 2026 14:31:38 +0100 Subject: [PATCH] Query work --- packages/effect-fc/src/Query.ts | 16 ++++++++++++---- packages/effect-fc/src/QueryClient.ts | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/effect-fc/src/Query.ts b/packages/effect-fc/src/Query.ts index 9aea2d7..70b2765 100644 --- a/packages/effect-fc/src/Query.ts +++ b/packages/effect-fc/src/Query.ts @@ -225,9 +225,17 @@ extends Pipeable.Class() implements Query { getCacheEntry( key: K ): Effect.Effect, never, QueryClient.QueryClient> { - return QueryClient.QueryClient.pipe( - Effect.andThen(client => client.cache), - Effect.map(HashMap.get(this.makeCacheKey(key))), + return Effect.all([ + Effect.succeed(this.makeCacheKey(key)), + Effect.map(QueryClient.QueryClient, client => client.cache), + DateTime.now, + ]).pipe( + Effect.andThen(([key, ref, now]) => ref.pipe( + Effect.andThen(HashMap.get(key)), + Effect.map(entry => new QueryClient.QueryClientCacheEntry(entry.result, entry.createdAt, now)), + Effect.tap(entry => SubscriptionRef.update(ref, HashMap.set(key, entry))), + )), + Effect.option, ) } @@ -238,7 +246,7 @@ extends Pipeable.Class() implements Query { return Effect.Do.pipe( Effect.bind("client", () => QueryClient.QueryClient), Effect.bind("now", () => DateTime.now), - Effect.let("entry", ({ now }) => new QueryClient.QueryClientCacheEntry(result, now)), + Effect.let("entry", ({ now }) => new QueryClient.QueryClientCacheEntry(result, now, now)), Effect.tap(({ client, entry }) => SubscriptionRef.update( client.cache, HashMap.set(this.makeCacheKey(key), entry), diff --git a/packages/effect-fc/src/QueryClient.ts b/packages/effect-fc/src/QueryClient.ts index 19517b7..4dcfb0d 100644 --- a/packages/effect-fc/src/QueryClient.ts +++ b/packages/effect-fc/src/QueryClient.ts @@ -103,6 +103,7 @@ implements Pipeable.Pipeable { constructor( readonly result: Result.Success, readonly createdAt: DateTime.DateTime, + readonly lastAccessedAt: DateTime.DateTime, ) { super() }