From 70d5ef950b01575059dee609c62576c27392c408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 21 Nov 2025 00:58:36 +0100 Subject: [PATCH] Query work --- packages/effect-fc/src/Query.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/effect-fc/src/Query.ts b/packages/effect-fc/src/Query.ts index e2df2aa..1c8a962 100644 --- a/packages/effect-fc/src/Query.ts +++ b/packages/effect-fc/src/Query.ts @@ -33,19 +33,17 @@ extends Pipeable.Class() implements Query { } readonly interrupt: Effect.Effect = Effect.gen(this, function*() { - return yield* Effect.andThen(this.fiber, Option.match({ - onSome: fiber => Effect.andThen( - Fiber.interrupt(fiber), - SubscriptionRef.set(this.fiber, Option.none()), - ), + return Option.match(yield* this.fiber, { + onSome: Fiber.interrupt, onNone: () => Effect.void, - })) + }) }) query(key: K): Effect.Effect, never, Scope.Scope | R> { - return this.fiber.pipe( - Effect.andThen(this.interrupt), - Effect.andThen(Result.unsafeForkEffect(this.f(key), { initialProgress: this.initialProgress })), + return Result.unsafeForkEffect( + Effect.onExit(this.f(key), () => SubscriptionRef.set(this.fiber, Option.none())), + { initialProgress: this.initialProgress }, + ).pipe( Effect.tap(([, fiber]) => SubscriptionRef.set(this.fiber, Option.some(fiber))), Effect.andThen(([sub]) => Effect.all([Effect.succeed(sub), sub.get])), Effect.andThen(([sub, initial]) => Stream.runFoldEffect( @@ -53,7 +51,6 @@ extends Pipeable.Class() implements Query { initial, (_, result) => Effect.as(SubscriptionRef.set(this.result, result), result), )), - Effect.tap(SubscriptionRef.set(this.fiber, Option.none())), ) } }