From edf06b5f99bed135e239c1097c5c0e704f029536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 11 Dec 2025 21:28:44 +0100 Subject: [PATCH] QueryClient work --- packages/effect-fc/src/QueryClient.ts | 29 ++++++++++++++------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/effect-fc/src/QueryClient.ts b/packages/effect-fc/src/QueryClient.ts index 1c2faa5..9f1e80e 100644 --- a/packages/effect-fc/src/QueryClient.ts +++ b/packages/effect-fc/src/QueryClient.ts @@ -8,7 +8,7 @@ export type QueryClientServiceTypeId = typeof QueryClientServiceTypeId export interface QueryClientService extends Pipeable.Pipeable { readonly [QueryClientServiceTypeId]: QueryClientServiceTypeId - readonly cache: Ref.Ref>> + readonly cache: Ref.Ref> readonly defaultTtl: Duration.DurationInput } @@ -16,11 +16,13 @@ export class QueryClient extends Effect.Service()("@effect-fc/Query scoped: Effect.suspend(() => service()) }) {} -export class QueryClientServiceImpl extends Pipeable.Class() implements QueryClientService { +export class QueryClientServiceImpl +extends Pipeable.Class() +implements QueryClientService { readonly [QueryClientServiceTypeId]: QueryClientServiceTypeId = QueryClientServiceTypeId constructor( - readonly cache: Ref.Ref>>, + readonly cache: Ref.Ref>, readonly defaultTtl: Duration.DurationInput, ) { super() @@ -37,7 +39,7 @@ export declare namespace make { export const make = Effect.fnUntraced(function* (options: make.Options = {}): Effect.fn.Return { return new QueryClientServiceImpl( - yield* Ref.make(HashMap.empty>()), + yield* Ref.make(HashMap.empty()), options.defaultTtl ?? "5 minutes", ) }) @@ -57,9 +59,13 @@ export const service = (options?: service.Options): Effect.Effect P export const QueryClientCacheEntryTypeId: unique symbol = Symbol.for("@effect-fc/QueryClient/QueryClientCacheEntry") export type QueryClientCacheEntryTypeId = typeof QueryClientCacheEntryTypeId -export interface QueryClientCacheEntry extends Pipeable.Pipeable { - readonly [QueryClientCacheEntryTypeId]: QueryClientCacheEntryTypeId - readonly at: DateTime.DateTime - readonly ttl: Duration.DurationInput - readonly result: Result.Final -} - -export class QueryClientCacheEntryImpl extends Pipeable.Class() implements QueryClientCacheEntry { +export class QueryClientCacheEntry +extends Pipeable.Class() +implements Pipeable.Pipeable { readonly [QueryClientCacheEntryTypeId]: QueryClientCacheEntryTypeId = QueryClientCacheEntryTypeId constructor(