import { PrismaClient } from '@prisma/client'

const prismaClientSingleton = () => {
  return new PrismaClient({
    datasources: {
      db: {
        url: process.env.DATABASE_URL,
      },
    },
  })
}

declare const globalThis: {
  prismaGlobal: ReturnType<typeof prismaClientSingleton>;
} & typeof global;

const prisma = globalThis.prismaGlobal ?? prismaClientSingleton()

// Log current model keys to verify availability
if (process.env.NODE_ENV !== 'production') {
  const models = Object.keys(prisma).filter(k => !k.startsWith('_') && !k.startsWith('$'))
  console.log('[Prisma] Models loaded:', models.join(', '))
}

export { prisma }
export default prisma

if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma
