1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-01-22 19:52:46 +01:00
immich/server/libs/infra/src/db/config/database.config.ts
Hammer 5340683199
Allow the use of SSL connections to the postgres database. (#1256)
* Allow the use of SSL connections to the postgres database.

* Add default SSL false when no env set

* Add commented out example of DB_SSL env

* Refactor add SSL option into PostgresConnectionOptions

* Refactor the database connection to optionally use a URL string instead of the env variables

* Refactor the database connection based on feedback

* Add dynamic validation around the DB envs

* Remove DB_URL from example

* Fix rebase

* Add back the optional database port in the example

* Formatted file correctly

* change types to a const to fix tests
2023-01-20 14:27:01 -06:00

26 lines
949 B
TypeScript

import { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions';
import { DataSource } from 'typeorm';
const baseDatabaseConfig: PostgresConnectionOptions = {
type: 'postgres',
entities: [__dirname + '/../**/*.entity.{js,ts}'],
synchronize: false,
migrations: [__dirname + '/../migrations/*.{js,ts}'],
migrationsRun: true,
connectTimeoutMS: 10000, // 10 seconds
};
const envBasedDatabaseConfig = {
host: process.env.DB_HOSTNAME || 'immich_postgres',
port: parseInt(process.env.DB_PORT || '5432'),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE_NAME,
};
const url = process.env.DB_URL;
const additionalSSLDatabaseConfig = url ? { url } : envBasedDatabaseConfig;
export const databaseConfig: PostgresConnectionOptions = { ...baseDatabaseConfig, ...additionalSSLDatabaseConfig };
export const dataSource = new DataSource(databaseConfig);