diff --git a/.env.example b/.env.example index bb39785..121e905 100644 --- a/.env.example +++ b/.env.example @@ -8,7 +8,8 @@ DB_USER=postgres DB_PASSWORD=postgres DB_NAME=cotizador_e3 -# Solo la usa el CLI de Prisma (migraciones). Debe coincidir con DB_*. +# Opcional: solo la usa el CLI de Prisma (migraciones). Si no la defines, +# se construye automáticamente desde las DB_* (ver prisma.config.ts). DATABASE_URL="postgresql://postgres:postgres@localhost:5432/cotizador_e3" # ── Auth ── diff --git a/prisma.config.ts b/prisma.config.ts index 6cff133..1e1fde5 100644 --- a/prisma.config.ts +++ b/prisma.config.ts @@ -1,6 +1,19 @@ import "dotenv/config"; import { defineConfig } from "prisma/config"; +// El CLI de Prisma (migrate deploy) necesita una URL. Si DATABASE_URL no está +// definida (p. ej. despliegue Dockerfile en Coolify), se arma desde las DB_* +// que ya usan la app y el seed — así ambas vías apuntan a la misma BD. +function databaseUrl(): string { + if (process.env["DATABASE_URL"]) return process.env["DATABASE_URL"]; + const host = process.env["DB_HOST"] || "localhost"; + const port = process.env["DB_PORT"] || "5432"; + const user = encodeURIComponent(process.env["DB_USER"] || "postgres"); + const password = encodeURIComponent(process.env["DB_PASSWORD"] || "postgres"); + const name = process.env["DB_NAME"] || "cotizador_e3"; + return `postgresql://${user}:${password}@${host}:${port}/${name}`; +} + export default defineConfig({ schema: "prisma/schema.prisma", migrations: { @@ -8,6 +21,6 @@ export default defineConfig({ seed: "npx tsx prisma/seed.ts", }, datasource: { - url: process.env["DATABASE_URL"], + url: databaseUrl(), }, });