import { Effect } from "effect"
export class Database extends Effect.Service<Database>()("Database", {
scoped: Effect.acquireRelease(
Effect.tryPromise({
try: () =>
Promise.resolve({
client: "sql client goes here",
close: () =>
new Promise<void>((resolve) => {
console.log("Connection closed")
resolve()
}),
}),
catch: (cause) => new Error("Oops", { cause }),
}),
(resource) => Effect.promise(() => resource.close())
),
}) {}
import { Effect } from "effect"
export class Database extends Effect.Service<Database>()("Database", {
scoped: Effect.acquireRelease(
Effect.tryPromise({
try: () =>
Promise.resolve({
client: "sql client goes here",
close: () =>
new Promise<void>((resolve) => {
console.log("Connection closed")
resolve()
}),
}),
catch: (cause) => new Error("Oops", { cause }),
}),
(resource) => Effect.promise(() => resource.close())
),
}) {}