import { Config, Effect, Layer, Redacted } from "effect";
import { PgClient } from "@effect/sql-pg";
import * as Pg from "@effect/sql-drizzle/Pg";
const constructDbUrl = Effect.fn("constructDbUrl")(function* () {
const config = yield* Config.all({
host: Config.string("SUPABASE_DATABASE_HOST"),
user: Config.string("SUPABASE_DATABASE_USER"),
password: Config.string("SUPABASE_DATABASE_PASSWORD"),
database: Config.string("SUPABASE_DATABASE_NAME"),
port: Config.withDefault(Config.string("SUPABASE_DATABASE_PORT"), "6543"),
});
return `postgresql://${config.user}:${config.password}@${config.host}:${config.port}/${config.database}`;
});
export const Db = Pg.PgDrizzle;
export const DbLive = Pg.layerWithConfig({}).pipe(
Layer.provideMerge(
PgClient.layer({
url: Redacted.make(constructDbUrl().pipe(Effect.runSync)),
ssl: true,
}),
),
);
import { Config, Effect, Layer, Redacted } from "effect";
import { PgClient } from "@effect/sql-pg";
import * as Pg from "@effect/sql-drizzle/Pg";
const constructDbUrl = Effect.fn("constructDbUrl")(function* () {
const config = yield* Config.all({
host: Config.string("SUPABASE_DATABASE_HOST"),
user: Config.string("SUPABASE_DATABASE_USER"),
password: Config.string("SUPABASE_DATABASE_PASSWORD"),
database: Config.string("SUPABASE_DATABASE_NAME"),
port: Config.withDefault(Config.string("SUPABASE_DATABASE_PORT"), "6543"),
});
return `postgresql://${config.user}:${config.password}@${config.host}:${config.port}/${config.database}`;
});
export const Db = Pg.PgDrizzle;
export const DbLive = Pg.layerWithConfig({}).pipe(
Layer.provideMerge(
PgClient.layer({
url: Redacted.make(constructDbUrl().pipe(Effect.runSync)),
ssl: true,
}),
),
);