1import * as AWS from "alchemy/AWS";
2import * as Drizzle from "alchemy/Drizzle/Postgres";
3import * as Effect from "effect/Effect";
4import * as Redacted from "effect/Redacted";
5import { Database } from "./database.ts";
6
7export const connectDatabase = Effect.gen(function* () {
8 const cluster = yield* Database;
9 const connect = yield* AWS.DSQL.Connect(cluster, { username: "app_user" });
10 return yield* Drizzle.Postgres(
11 connect.pipe(
12 Effect.map((connection) => {
13 const url = new URL(Redacted.value(connection.url));
14 url.searchParams.set("sslmode", "verify-full");
15 return Redacted.make(url.toString());
16 }),
17 ),
18 );
19});