1import * as Cloudflare from "@/Cloudflare/index.ts";
2import * as Alchemy from "@/index.ts";
3import * as Neon from "@/Neon/index.ts";
4import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";
6import SqlPostgresWorker from "./postgres-worker.ts";
7
8/**
9 * Neon Postgres origin + Hyperdrive + Worker for the `SQL.Postgres` client
10 * suite. Kept in its own file so it can also be driven directly, e.g.
11 * `alchemy logs --tail --stage test --config ./test/SQL/fixtures/postgres-stack.ts`.
12 */
13export default Alchemy.Stack(
14 "SqlPostgresStack",
15 {
16 providers: Layer.merge(Cloudflare.providers(), Neon.providers()),
17 state: Cloudflare.state(),
18 },
19 Effect.gen(function* () {
20 const worker = yield* SqlPostgresWorker;
21 return {
22 url: worker.url.as<string>(),
23 };
24 }),
25);