diff --git a/src/lib/db.ts b/src/lib/db.ts index 9bdde18..0c7acbc 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -8,11 +8,31 @@ declare global { // 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 { - const host = process.env.DB_HOST || 'localhost'; + if (!process.env.DB_HOST) { + // Return a proxy that immediately rejects all database calls to prevent build-time hangs. + const dummyPrisma = new Proxy({} as any, { + get(target, prop) { + if (prop === '$transaction') { + return (fn: any) => fn(dummyPrisma); + } + if (typeof prop === 'string' && prop.startsWith('$')) { + return () => Promise.reject(new Error('Database not available during build')); + } + return new Proxy({}, { + get(subTarget, subProp) { + return () => Promise.reject(new Error('Database not available during build')); + } + }); + } + }); + return dummyPrisma; + } + + const host = process.env.DB_HOST; const port = Number(process.env.DB_PORT) || 3306; - const user = process.env.DB_USERNAME || 'dummy'; - const password = process.env.DB_PASSWORD || 'dummy'; - const database = process.env.DB_NAME || 'dummy'; + const user = process.env.DB_USERNAME; + const password = process.env.DB_PASSWORD; + const database = process.env.DB_NAME; const adapter = new PrismaMariaDb({ host,