const fs = require('fs'); const path = require('path'); try { fs.accessSync(path.resolve(__dirname, 'bot.env')); require('dotenv').config({ path: path.resolve(__dirname, 'bot.env') }); } catch (e) { try { fs.accessSync(path.resolve(__dirname, 'api.env')); require('dotenv').config({ path: path.resolve(__dirname, 'api.env') }); } catch (e) { throw new Error("bot.env or api.env required"); } } const moment = require('moment-timezone'); moment.tz.setDefault('UTC'); const entities = process.env.NODE_ENV === 'production' ? path.relative(process.cwd(), path.resolve(__dirname, 'dist/data/entities/*.js')) : path.relative(process.cwd(), path.resolve(__dirname, 'src/data/entities/*.ts')); const migrations = process.env.NODE_ENV === 'production' ? path.relative(process.cwd(), path.resolve(__dirname, 'dist/migrations/*.js')) : path.relative(process.cwd(), path.resolve(__dirname, 'src/migrations/*.ts')); module.exports = { type: "mysql", host: process.env.DB_HOST, username: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_DATABASE, charset: 'utf8mb4', supportBigNumbers: true, bigNumberStrings: true, dateStrings: true, synchronize: false, connectTimeout: 2000, // Entities entities: [entities], // Pool options extra: { typeCast(field, next) { if (field.type === 'DATETIME') { const val = field.string(); return val != null ? moment(val).format('YYYY-MM-DD HH:mm:ss') : null; } return next(); } }, // Migrations migrations: [migrations], cli: { migrationsDir: path.dirname(migrations) }, };