27 lines
1 KiB
JavaScript
27 lines
1 KiB
JavaScript
import { DataSource } from 'typeorm';
|
|
import { loadConfig } from './built/config.js';
|
|
import { entities } from './built/postgres.js';
|
|
import { isConcurrentIndexMigrationEnabled } from "./migration/js/migration-config.js";
|
|
import { LoggerService } from './built/core/LoggerService.js';
|
|
import { NativeTimeService } from './built/global/TimeService.js';
|
|
import { EnvService } from './built/global/EnvService.js';
|
|
|
|
const loggerService = new LoggerService(console, new NativeTimeService(), new EnvService());
|
|
const config = loadConfig(loggerService);
|
|
|
|
export default new DataSource({
|
|
type: 'postgres',
|
|
host: config.db.host,
|
|
port: config.db.port,
|
|
username: config.db.user,
|
|
password: config.db.pass,
|
|
database: config.db.db,
|
|
extra: {
|
|
...config.db.extra,
|
|
// migrations may be very slow, give them longer to run (that 10*1000 comes from postgres.ts)
|
|
statement_timeout: (config.db.extra?.statement_timeout ?? 1000 * 10) * 100,
|
|
},
|
|
entities: entities,
|
|
migrations: ['migration/*.js'],
|
|
migrationsTransactionMode: isConcurrentIndexMigrationEnabled() ? 'each' : 'all',
|
|
});
|