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

This commit is contained in:
Julien Valverdé
2025-03-05 00:16:13 +01:00
parent adaadf13b2
commit 8fa24b1791
5 changed files with 34 additions and 20 deletions

View File

@@ -8,16 +8,22 @@ export interface QueryService<A, E> {
readonly refresh: Effect.Effect<Fiber.RuntimeFiber<void>>
}
export const Tag = <const Id extends string>(id: Id) => <
Self, A, E = never,
>() => Effect.Tag(id)<Self, QueryService<A, E>>()
export interface LayerProps<A, E, R> {
readonly query: Effect.Effect<A, E, R>
}
export const layer = <Self, Id extends string, A, E, R>(
tag: Context.TagClass<Self, Id, QueryService<A, E>>,
query: Effect.Effect<A, E, R>,
props: LayerProps<A, E, R>,
): Layer.Layer<Self, never, R> => Layer.effect(tag, Effect.gen(function*() {
const runner = yield* QueryRunner.make(query)
const runner = yield* QueryRunner.make({
query: props.query
})
return {
state: runner.stateRef,