webadmin系统设置

This commit is contained in:
2026-07-12 22:52:40 +08:00
parent 236a2a87a5
commit 1bd152073a
41 changed files with 1413 additions and 151 deletions
@@ -0,0 +1,47 @@
import { resolve } from 'path';
import { PrismaClient } from '@prisma/client';
import { SYSTEM_CONFIG_KEY_SET } from './system-config.registry';
function apiRoot() {
return resolve(__dirname, '..', '..');
}
export function resolveEnvFilePath() {
const isProduction = (process.env.NODE_ENV ?? 'development') === 'production';
return resolve(apiRoot(), isProduction ? '.env.production' : '.env');
}
/** 启动前从 DB 覆盖 process.env(在 Nest 创建前调用) */
export async function preloadSystemConfigEnv(): Promise<number> {
const prisma = new PrismaClient();
try {
const rows = await prisma.systemConfig.findMany();
for (const row of rows) {
if (SYSTEM_CONFIG_KEY_SET.has(row.configKey)) {
process.env[row.configKey] = row.value;
}
}
return rows.length;
} catch (error) {
if (
typeof error === 'object' &&
error !== null &&
'code' in error &&
(error as { code?: string }).code === 'P2021'
) {
console.warn('[config] system_config 表不存在,跳过 DB 预加载');
return 0;
}
throw error;
} finally {
await prisma.$disconnect();
}
}
export function applyEnvOverlay(values: Record<string, string>) {
for (const [key, value] of Object.entries(values)) {
if (SYSTEM_CONFIG_KEY_SET.has(key)) {
process.env[key] = value;
}
}
}