| 1 | import { PrismaNeon } from "@prisma/adapter-neon"; |
| 2 | import { PrismaPg } from "@prisma/adapter-pg"; |
| 3 | |
| 4 | import { env } from "@/env"; |
| 5 | import { PrismaClient } from "@/prisma/client"; |
| 6 | |
| 7 | const createPrismaClient = () => |
| 8 | new PrismaClient({ |
| 9 | adapter: |
| 10 | env.NODE_ENV === "production" && !process.env.LOCAL_PRODUCTION |
| 11 | ? new PrismaNeon({ connectionString: env.DATABASE_URL }) |
| 12 | : new PrismaPg({ connectionString: env.DATABASE_URL }), |
| 13 | log: env.NODE_ENV === "development" ? ["warn", "error"] : ["error"], |
| 14 | }); |
| 15 | |
| 16 | const globalForPrisma = globalThis as unknown as { |
| 17 | prisma: ReturnType<typeof createPrismaClient> | undefined; |
| 18 | }; |
| 19 | |
| 20 | export const db = globalForPrisma.prisma ?? createPrismaClient(); |
| 21 | |
| 22 | if (env.NODE_ENV !== "production") globalForPrisma.prisma = db; |
| 23 |