Merge commit '36c66dd290d3ce6eb1ccd310d0c658d4a32bb8eb' as 'repos/effect'
This commit is contained in:
38
repos/effect/packages/sql/d1/test/utils.ts
Normal file
38
repos/effect/packages/sql/d1/test/utils.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { D1Database } from "@cloudflare/workers-types"
|
||||
import { D1Client } from "@effect/sql-d1"
|
||||
import { Context, Data, Effect, Layer } from "effect"
|
||||
import { Miniflare } from "miniflare"
|
||||
|
||||
export class MiniflareError extends Data.TaggedError("MiniflareError")<{
|
||||
cause: unknown
|
||||
}> {}
|
||||
|
||||
export class D1Miniflare extends Context.Service<
|
||||
D1Miniflare,
|
||||
Miniflare
|
||||
>()("test/D1Miniflare") {
|
||||
static readonly layer = Layer.effect(this)(
|
||||
Effect.acquireRelease(
|
||||
Effect.try({
|
||||
try: () =>
|
||||
new Miniflare({
|
||||
modules: true,
|
||||
d1Databases: {
|
||||
DB: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||
},
|
||||
script: ""
|
||||
}),
|
||||
catch: (cause) => new MiniflareError({ cause })
|
||||
}),
|
||||
(miniflare) => Effect.promise(() => miniflare.dispose())
|
||||
)
|
||||
)
|
||||
|
||||
static layerClient = Layer.unwrap(
|
||||
Effect.gen(function*() {
|
||||
const miniflare = yield* D1Miniflare
|
||||
const db: D1Database = yield* Effect.tryPromise(() => miniflare.getD1Database("DB"))
|
||||
return D1Client.layer({ db })
|
||||
})
|
||||
).pipe(Layer.provide(this.layer))
|
||||
}
|
||||
Reference in New Issue
Block a user