/** * App config. * @file 应用运行配置 * @module config/app.config * @author zhxiao1124 */ // 注意:本文件不主动加载 .env,环境变量由 src/main.ts 顶部的 `import "dotenv/config"` 注入。 // e2e 测试不加载 .env,DB_CONFIG.host 为空时应用自动退回内存模式(见 src/app/app.module.ts 的门控)。 const numberEnv = (key: string, fallback: number) => { const value = Number(process.env[key]); return Number.isFinite(value) ? value : fallback; }; const boolEnv = (key: string, fallback: boolean) => { const value = process.env[key]; if (value === undefined) return fallback; return value === "true" || value === "1"; }; export const APP_CONFIG = { APP_NAME: "cth-tk-backend", PORT: numberEnv("PORT", 3000), }; export const OPTIONS_CONFIG = { cors: { origin: process.env.CORS_ORIGIN?.split(","), credentials: true, }, }; export const DB_CONFIG = { type: "mysql" as const, host: process.env.DB_HOST, port: numberEnv("DB_PORT", 3306), username: process.env.DB_USERNAME ?? "root", password: process.env.DB_PASSWORD ?? "", database: process.env.DB_DATABASE ?? "cth_tk", synchronize: boolEnv("DB_SYNCHRONIZE", false), }; export const AUTH_CONFIG = { jwtTokenSecret: process.env.JWT_SECRET ?? "development-secret", expiresIn: "30d" as const, }; export const ADMIN_AUTH_CONFIG = { jwtTokenSecret: process.env.ADMIN_JWT_SECRET ?? process.env.JWT_SECRET ?? "development-secret", expiresIn: "12h" as const, username: process.env.ADMIN_USERNAME ?? "admin", password: process.env.ADMIN_PASSWORD ?? "admin123", email: process.env.ADMIN_EMAIL ?? "admin@example.com", }; export const BYTEPLUS_CONFIG = { bucket: process.env.BYTEPLUS_BUCKET ?? "mock-short-drama", };