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(