import 'dotenv/config'; import 'reflect-metadata'; import { DataSource } from 'typeorm'; import { AuditLogEntity } from '../audit/audit-log.entity'; import { UserEntity } from '../auth/user.entity'; import { RefreshTokenEntity } from '../auth/refresh-token.entity'; import { ListTemplateEntity } from '../list-templates/list-template.entity'; import { ListTemplateItemEntity } from '../list-templates/list-template-item.entity'; import { TemplateSeedEntity } from '../list-templates/template-seed.entity'; import { UserListEntity } from '../lists/user-list.entity'; import { UserListItemEntity } from '../lists/user-list-item.entity'; import { databaseLoggerOptionsFromEnv, parseDatabaseLogging, slowQueryThresholdFromEnv, } from './database-logging.config'; import { DatabaseLogger } from './database.logger'; export default new DataSource({ type: 'mysql', host: process.env.DB_HOST ?? 'localhost', port: Number(process.env.DB_PORT ?? '3306'), username: process.env.DB_USERNAME ?? 'root', password: process.env.DB_PASSWORD ?? '', database: process.env.DB_DATABASE ?? 'listify', synchronize: false, logging: parseDatabaseLogging(process.env.DB_LOGGING), logger: new DatabaseLogger(databaseLoggerOptionsFromEnv(process.env)), maxQueryExecutionTime: slowQueryThresholdFromEnv(process.env), entities: [ AuditLogEntity, UserEntity, RefreshTokenEntity, ListTemplateEntity, ListTemplateItemEntity, TemplateSeedEntity, UserListEntity, UserListItemEntity, ], migrations: ['src/database/migrations/*.ts'], });