Add SSL support for PostgreSQL connection

This commit is contained in:
qtchaos 2023-12-30 01:09:04 +02:00
parent 9a27b0b0b4
commit b2598e3d82
No known key found for this signature in database
GPG Key ID: 7DA98B2B9EF06A90
5 changed files with 18 additions and 3 deletions

View File

@ -12,6 +12,8 @@ export const ormConfigSchema = z.object({
postgres: z.object({
// connection URL for postgres database
connection: z.string(),
// whether to use SSL for the connection
ssl: z.coerce.boolean().default(false),
}),
});

View File

@ -48,6 +48,9 @@ export const configSchema = z.object({
// Enable debug logging for MikroORM - Outputs queries and entity management logs
// Do NOT use in production, leaks all sensitive data
debugLogging: z.coerce.boolean().default(false),
// Enable SSL for the postgres connection
ssl: z.coerce.boolean().default(false),
}),
crypto: z.object({
// session secret. used for signing session tokens

View File

@ -1,4 +1,4 @@
import { ormConf } from '@/config/orm';
import { makeOrmConfig } from '@/modules/mikro/orm';
export default makeOrmConfig(ormConf.postgres.connection);
export default makeOrmConfig(ormConf.postgres.connection, ormConf.postgres.ssl);

View File

@ -18,6 +18,7 @@ export async function setupMikroORM() {
conf.postgres.connection,
conf.postgres.debugLogging,
(msg) => log.info(msg),
conf.postgres.ssl,
);
if (conf.postgres.syncSchema) {

View File

@ -2,7 +2,10 @@ import { Options } from '@mikro-orm/core';
import { MikroORM, PostgreSqlDriver } from '@mikro-orm/postgresql';
import path from 'path';
export function makeOrmConfig(url: string): Options<PostgreSqlDriver> {
export function makeOrmConfig(
url: string,
ssl: boolean,
): Options<PostgreSqlDriver> {
return {
type: 'postgresql',
clientUrl: url,
@ -13,6 +16,11 @@ export function makeOrmConfig(url: string): Options<PostgreSqlDriver> {
pathTs: './migrations',
path: './migrations',
},
driverOptions: {
connection: {
ssl,
},
},
};
}
@ -20,9 +28,10 @@ export async function createORM(
url: string,
debug: boolean,
log: (msg: string) => void,
ssl: boolean,
) {
return await MikroORM.init<PostgreSqlDriver>({
...makeOrmConfig(url),
...makeOrmConfig(url, ssl),
logger: log,
debug,
});