Drop the pooler from the MVP: point everything straight at Postgres

.env.example and the README still told people to use pgCat on :6432, the
exact setup that hangs on every parameterised query. With no prod and one
backend instance there is nothing for a pooler to multiplex, and
postgres-js already pools in-process, so DATABASE_URL now points at
Postgres on :5432 in .env.example, dev-env.sh and drizzle.config.ts.

prepare:false is kept in src/db/index.ts on purpose, so adding
PgBouncer later (tested working) is a config change rather than a code
change. The long measurement narrative in that file's comment is cut to
the decision and the pointer to PLAN.md, where the numbers now live.
This commit is contained in:
2026-10-20 10:24:19 +00:00
parent a9aec03d47
commit c312e37b4a
6 changed files with 21 additions and 36 deletions
+3 -4
View File
@@ -5,10 +5,9 @@ export default defineConfig({
out: "./drizzle",
dialect: "postgresql",
dbCredentials: {
// Matches scripts/dev-env.sh's DEV_DATABASE_URL. It pointed at 6432 (a
// pooler) where nothing listens in this environment, so a bare db:migrate
// failed confusingly. Migrations want Postgres directly in any case: see
// the note in src/db/index.ts about parameterised queries through pgCat.
// Matches scripts/dev-env.sh's DEV_DATABASE_URL and .env.example: straight
// at Postgres. Migrations must never go through a pooler - drizzle-kit
// cannot pass `prepare: false`.
url: process.env.DATABASE_URL ?? "postgres://continuum:continuum@localhost:5432/continuum",
},
verbose: true,