Query work
All checks were successful
Lint / lint (push) Successful in 13s

This commit is contained in:
Julien Valverdé
2026-01-18 14:31:38 +01:00
parent 0e8adf8506
commit 636beedd13
2 changed files with 13 additions and 4 deletions

View File

@@ -225,9 +225,17 @@ extends Pipeable.Class() implements Query<K, A, E, R, P> {
getCacheEntry( getCacheEntry(
key: K key: K
): Effect.Effect<Option.Option<QueryClient.QueryClientCacheEntry>, never, QueryClient.QueryClient> { ): Effect.Effect<Option.Option<QueryClient.QueryClientCacheEntry>, never, QueryClient.QueryClient> {
return QueryClient.QueryClient.pipe( return Effect.all([
Effect.andThen(client => client.cache), Effect.succeed(this.makeCacheKey(key)),
Effect.map(HashMap.get(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<K, A, E, R, P> {
return Effect.Do.pipe( return Effect.Do.pipe(
Effect.bind("client", () => QueryClient.QueryClient), Effect.bind("client", () => QueryClient.QueryClient),
Effect.bind("now", () => DateTime.now), 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( Effect.tap(({ client, entry }) => SubscriptionRef.update(
client.cache, client.cache,
HashMap.set(this.makeCacheKey(key), entry), HashMap.set(this.makeCacheKey(key), entry),

View File

@@ -103,6 +103,7 @@ implements Pipeable.Pipeable {
constructor( constructor(
readonly result: Result.Success<unknown>, readonly result: Result.Success<unknown>,
readonly createdAt: DateTime.DateTime, readonly createdAt: DateTime.DateTime,
readonly lastAccessedAt: DateTime.DateTime,
) { ) {
super() super()
} }