This commit is contained in:
Rio
2026-06-18 12:45:27 +07:00
parent 1318c06582
commit 2be37c4a9e
+23 -18
View File
@@ -5,29 +5,34 @@ declare global {
var prisma: PrismaClient | undefined; var prisma: PrismaClient | undefined;
} }
// Guard: don't attempt a real DB connection at build time when env vars are absent.
// During `next build` inside Docker, DB_HOST is not injected — only available at runtime.
function createPrismaClient(connectionLimit: number): PrismaClient {
if (!process.env.DB_HOST) {
// Return a shell client with no adapter — all queries will throw and be caught
// by the try/catch in callers (e.g. getSettings returns DEFAULT_SETTINGS).
return new PrismaClient();
}
const adapter = new PrismaMariaDb({
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT) || 3306,
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
connectionLimit,
});
return new PrismaClient({ adapter });
}
let prisma: PrismaClient; let prisma: PrismaClient;
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') {
const adapter = new PrismaMariaDb({ prisma = createPrismaClient(10);
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
connectionLimit: 10,
});
prisma = new PrismaClient({ adapter });
} else { } else {
if (!global.prisma) { if (!global.prisma) {
const adapter = new PrismaMariaDb({ global.prisma = createPrismaClient(5);
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
connectionLimit: 5,
});
global.prisma = new PrismaClient({ adapter });
} }
prisma = global.prisma; prisma = global.prisma;
} }