diff --git a/backend/src/db/instance.ts b/backend/src/db/instance.ts index 1eb54c136..c379c24a5 100644 --- a/backend/src/db/instance.ts +++ b/backend/src/db/instance.ts @@ -1,11 +1,23 @@ import knex from "knex"; export type TDbClient = ReturnType; -export const initDbConnection = (dbConnectionUri: string) => { +export const initDbConnection = ({ + dbConnectionUri, + dbRootCert +}: { + dbConnectionUri: string; + dbRootCert?: string; +}) => { const db = knex({ client: "pg", - connection: dbConnectionUri + connection: { + connectionString: dbConnectionUri, + ssl: dbRootCert ? { + rejectUnauthorized: true, + ca: Buffer.from(dbRootCert, 'base64').toString('ascii') + } : false + } }); return db; -}; +}; \ No newline at end of file diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index 11c1a3a36..62217749e 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -15,7 +15,8 @@ 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 conntection string")), + DB_CONNECTION_URI: zpStr(z.string().describe("Postgres database connection string")), + DB_ROOT_CERT: zpStr(z.string().describe("Postgres database base64-encoded CA cert").optional()), NODE_ENV: z.enum(["development", "test", "production"]).default("production"), SALT_ROUNDS: z.coerce.number().default(10), // TODO(akhilmhdh): will be changed to one diff --git a/backend/src/main.ts b/backend/src/main.ts index c1a3d7207..f85eed3ed 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -12,7 +12,11 @@ dotenv.config(); const run = async () => { const logger = await initLogger(); const appCfg = initEnvConfig(logger); - const db = initDbConnection(appCfg.DB_CONNECTION_URI); + const db = initDbConnection({ + dbConnectionUri: appCfg.DB_CONNECTION_URI, + dbRootCert: appCfg.DB_ROOT_CERT + }); + const smtp = smtpServiceFactory(formatSmtpConfig()); const queue = queueServiceFactory(appCfg.REDIS_URL);