diff --git a/backend/src/db/instance.ts b/backend/src/db/instance.ts index 2a321a3bc..bd4ce99c1 100644 --- a/backend/src/db/instance.ts +++ b/backend/src/db/instance.ts @@ -6,6 +6,13 @@ export const initDbConnection = ({ dbConnectionUri, dbRootCert }: { dbConnection client: "pg", connection: { connectionString: dbConnectionUri, + host: process.env.DB_HOST, + // @ts-expect-error I have no clue why only for the port there is a type error + // eslint-disable-next-line + port: process.env.DB_PORT, + user: process.env.DB_USER, + database: process.env.DB_NAME, + password: process.env.DB_PASSWORD, ssl: dbRootCert ? { rejectUnauthorized: true, diff --git a/backend/src/db/knexfile.ts b/backend/src/db/knexfile.ts index 532ab496d..8af2b59ab 100644 --- a/backend/src/db/knexfile.ts +++ b/backend/src/db/knexfile.ts @@ -7,18 +7,22 @@ import path from "path"; // Update with your config settings. . dotenv.config({ - path: path.join(__dirname, "../../../.env.migration"), - debug: true + path: path.join(__dirname, "../../../.env.migration") }); dotenv.config({ - path: path.join(__dirname, "../../../.env"), - debug: true + path: path.join(__dirname, "../../../.env") }); + export default { development: { client: "postgres", connection: { connectionString: process.env.DB_CONNECTION_URI, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + user: process.env.DB_USER, + database: process.env.DB_NAME, + password: process.env.DB_PASSWORD, ssl: process.env.DB_ROOT_CERT ? { rejectUnauthorized: true, @@ -41,6 +45,11 @@ export default { client: "postgres", connection: { connectionString: process.env.DB_CONNECTION_URI, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + user: process.env.DB_USER, + database: process.env.DB_NAME, + password: process.env.DB_PASSWORD, ssl: process.env.DB_ROOT_CERT ? { rejectUnauthorized: true, diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index 655e402df..84d772e2e 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -15,8 +15,16 @@ const envSchema = z PORT: z.coerce.number().default(4000), REDIS_URL: zpStr(z.string()), HOST: zpStr(z.string().default("localhost")), - DB_CONNECTION_URI: zpStr(z.string().describe("Postgres database connection string")), + DB_CONNECTION_URI: zpStr(z.string().describe("Postgres database connection string")).default( + `postgresql://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}` + ), DB_ROOT_CERT: zpStr(z.string().describe("Postgres database base64-encoded CA cert").optional()), + DB_HOST: zpStr(z.string().describe("Postgres database host").optional()), + DB_PORT: zpStr(z.string().describe("Postgres database port").optional()).default("5432"), + DB_USER: zpStr(z.string().describe("Postgres database username").optional()), + DB_PASSWORD: zpStr(z.string().describe("Postgres database password").optional()), + DB_NAME: zpStr(z.string().describe("Postgres database name").optional()), + NODE_ENV: z.enum(["development", "test", "production"]).default("production"), SALT_ROUNDS: z.coerce.number().default(10), INITIAL_ORGANIZATION_NAME: zpStr(z.string().optional()),