feat: Docker部署与CI/CD集成, 搜索栏修复, 上传目录改为data

This commit is contained in:
xiner
2025-11-28 18:42:30 +08:00
commit 8351d6bbfc
243 changed files with 13192 additions and 0 deletions

36
lib/prisma.ts Normal file
View File

@@ -0,0 +1,36 @@
import { PrismaClient } from '@prisma/client';
import { getServerConfig } from './serverConfig';
// PrismaClient is attached to the `global` object in development to prevent
// exhausting your database connection limit.
const getUrl = () => {
const cfg = getServerConfig();
const fromEnv = process.env.DATABASE_URL;
const fallback = `mysql://${cfg.dbUser}:${cfg.dbPass}@${cfg.dbHost}:${cfg.dbPort}/${cfg.dbName}`;
return fromEnv || fallback;
};
const prismaClientSingleton = () => {
const url = getUrl();
return new PrismaClient({ datasources: { db: { url } } });
};
type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>;
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClientSingleton | undefined;
};
export const prisma = globalForPrisma.prisma ?? prismaClientSingleton();
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
export default prisma;
export const resetPrisma = () => {
const url = getUrl();
const client = new PrismaClient({ datasources: { db: { url } } });
globalForPrisma.prisma = client;
return client;
};