const WithTransaction = Layer.scopedContext(
pipe(
DatabaseService,
Effect.flatMap((database) => {
const { promise, resolve } = Promise.withResolvers();
return Effect.acquireRelease(
Effect.sync(() => {
let _transaction: Database;
database.transaction((transaction) => {
_transaction = transaction;
return promise;
});
return _transaction!;
}),
() => Effect.sync(() => resolve()),
);
}),
),
);
const WithTransaction = Layer.scopedContext(
pipe(
DatabaseService,
Effect.flatMap((database) => {
const { promise, resolve } = Promise.withResolvers();
return Effect.acquireRelease(
Effect.sync(() => {
let _transaction: Database;
database.transaction((transaction) => {
_transaction = transaction;
return promise;
});
return _transaction!;
}),
() => Effect.sync(() => resolve()),
);
}),
),
);