Fix Result
Lint / lint (push) Successful in 42s

This commit is contained in:
Julien Valverdé
2025-12-21 09:53:00 +01:00
parent cfd3028218
commit 66694c7d7e
3 changed files with 35 additions and 9 deletions
+26 -1
View File
@@ -1,4 +1,4 @@
import { type Cause, type Context, type Duration, Effect, Fiber, identity, Option, Pipeable, Predicate, type Scope, Stream, type Subscribable, SubscriptionRef } from "effect"
import { type Cause, type Context, DateTime, type Duration, Effect, Fiber, HashMap, identity, Option, Pipeable, Predicate, type Scope, Stream, type Subscribable, SubscriptionRef } from "effect"
import * as QueryClient from "./QueryClient.js"
import * as Result from "./Result.js"
@@ -143,6 +143,31 @@ extends Pipeable.Class() implements Query<K, A, E, R, P> {
),
) as Effect.Effect<Result.Final<A, E, P>>
}
getCacheEntry(
key: K
): Effect.Effect<Option.Option<QueryClient.QueryClientCacheEntry>, never, QueryClient.QueryClient> {
return QueryClient.QueryClient.pipe(
Effect.andThen(client => client.cache),
Effect.map(HashMap.get(new QueryClient.QueryClientCacheKey(key, this.f as (key: Query.AnyKey) => Effect.Effect<unknown, unknown, unknown>))),
)
}
updateCacheEntry(
key: K,
result: Result.Success<A>,
): Effect.Effect<QueryClient.QueryClientCacheEntry, never, QueryClient.QueryClient> {
return Effect.Do.pipe(
Effect.bind("client", () => QueryClient.QueryClient),
Effect.bind("now", () => DateTime.now),
Effect.let("entry", ({ now }) => new QueryClient.QueryClientCacheEntry(result, now)),
Effect.tap(({ client, entry }) => SubscriptionRef.update(
client.cache,
HashMap.set(new QueryClient.QueryClientCacheKey(key, this.f as (key: Query.AnyKey) => Effect.Effect<unknown, unknown, unknown>), entry),
)),
Effect.map(({ entry }) => entry),
)
}
}
export const isQuery = (u: unknown): u is Query<readonly unknown[], unknown, unknown, unknown, unknown> => Predicate.hasProperty(u, QueryTypeId)