feat: 多功能更新

This commit is contained in:
2026-04-26 00:39:28 +08:00
parent abd1b03529
commit e26e2f5491
26 changed files with 992 additions and 330 deletions
+9 -15
View File
@@ -3,7 +3,6 @@ import { PrismaClient } from "~~/app/generated/prisma/client";
const globalForPrisma = globalThis as unknown as {
prisma?: PrismaClient;
prismaLogged?: boolean;
};
const databaseUrl = process.env.DATABASE_URL;
@@ -12,7 +11,10 @@ if (!databaseUrl) {
throw new Error("DATABASE_URL is required to initialize PrismaClient");
}
type MariaDbPoolConfig = Exclude<ConstructorParameters<typeof PrismaMariaDb>[0], string>;
type MariaDbPoolConfig = Exclude<
ConstructorParameters<typeof PrismaMariaDb>[0],
string
>;
function getNumberParam(url: URL, name: string, fallback: number) {
const value = url.searchParams.get(name);
@@ -46,29 +48,21 @@ function createMariaDbConfig(urlString: string): MariaDbPoolConfig {
database,
connectionLimit: getNumberParam(url, "connection_limit", 5),
acquireTimeout: getNumberParam(url, "pool_timeout", 30) * 1000,
connectTimeout: getNumberParam(url, "connect_timeout", 10) * 1000,
connectTimeout: getNumberParam(url, "connect_timeout", 10) * 1000
};
}
const mariaDbConfig = createMariaDbConfig(databaseUrl);
const adapter = new PrismaMariaDb(mariaDbConfig, { database: mariaDbConfig.database });
if (!globalForPrisma.prismaLogged) {
console.info("[prisma] initializing MariaDB pool", {
host: mariaDbConfig.host,
port: mariaDbConfig.port,
database: mariaDbConfig.database,
connectionLimit: mariaDbConfig.connectionLimit,
});
globalForPrisma.prismaLogged = true;
}
const adapter = new PrismaMariaDb(mariaDbConfig, {
database: mariaDbConfig.database
});
/** Reuse PrismaClient during dev hot reloads so Nuxt does not create duplicate pools. */
export const prisma =
globalForPrisma.prisma ??
new PrismaClient({
adapter,
log: ["warn", "error"],
log: ["warn", "error"]
});
if (process.env.NODE_ENV !== "production") {