© 2026 Hedgehog Software, LLC
export function transaction<E, A>(self: Effect.Effect<EntityManager, E, A>) { const acquire = pipe( EntityManagerTag, Effect.flatMap((manager) => Effect.tryPromise(async () => manager.transaction(async (transactionalManager) => Effect.runPromise(pipe(self, Effect.provideService(EntityManagerTag, transactionalManager))) ) ) ) ); return Effect.acquireUseRelease( Scope.make(), () => acquire, (scope) => { // TODO: check how to handle errors here return Scope.close(scope, Exit.unit()); } ); }
self
<EntityManager | AnotherDependency, E, A>