Add knex SSL configuration support

This commit is contained in:
Tuan Dang
2024-02-03 15:16:43 -08:00
parent 3cbda8e785
commit 644cdf5a67
3 changed files with 22 additions and 5 deletions
+15 -3
View File
@@ -1,11 +1,23 @@
import knex from "knex"; import knex from "knex";
export type TDbClient = ReturnType<typeof initDbConnection>; export type TDbClient = ReturnType<typeof initDbConnection>;
export const initDbConnection = (dbConnectionUri: string) => { export const initDbConnection = ({
dbConnectionUri,
dbRootCert
}: {
dbConnectionUri: string;
dbRootCert?: string;
}) => {
const db = knex({ const db = knex({
client: "pg", client: "pg",
connection: dbConnectionUri connection: {
connectionString: dbConnectionUri,
ssl: dbRootCert ? {
rejectUnauthorized: true,
ca: Buffer.from(dbRootCert, 'base64').toString('ascii')
} : false
}
}); });
return db; return db;
}; };
+2 -1
View File
@@ -15,7 +15,8 @@ const envSchema = z
PORT: z.coerce.number().default(4000), PORT: z.coerce.number().default(4000),
REDIS_URL: zpStr(z.string()), REDIS_URL: zpStr(z.string()),
HOST: zpStr(z.string().default("localhost")), 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"), NODE_ENV: z.enum(["development", "test", "production"]).default("production"),
SALT_ROUNDS: z.coerce.number().default(10), SALT_ROUNDS: z.coerce.number().default(10),
// TODO(akhilmhdh): will be changed to one // TODO(akhilmhdh): will be changed to one
+5 -1
View File
@@ -12,7 +12,11 @@ dotenv.config();
const run = async () => { const run = async () => {
const logger = await initLogger(); const logger = await initLogger();
const appCfg = initEnvConfig(logger); 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 smtp = smtpServiceFactory(formatSmtpConfig());
const queue = queueServiceFactory(appCfg.REDIS_URL); const queue = queueServiceFactory(appCfg.REDIS_URL);