ArmoHotspot/backend/.agents/skills/prisma-postgres-setup/references/prisma7-client.md
Gökhan ÖZARSLAN 6b5a6d0a71 ilk dosyalar
2026-08-16 15:09:05 +03:00

2.6 KiB

Prisma 7 Client Instantiation

Prisma 7 changed how PrismaClient connects to databases. The CLI (prisma db push, prisma migrate) reads the URL from prisma.config.ts. But at runtime, you must provide a driver adapter to PrismaClient explicitly.

Required packages

npm install @prisma/client @prisma/adapter-pg pg
  • @prisma/adapter-pg — the Prisma adapter for the pg PostgreSQL driver
  • pg — the underlying Node.js PostgreSQL driver

Basic instantiation

import 'dotenv/config'
import pg from 'pg'
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from './generated/prisma/client.js'

const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL })
const adapter = new PrismaPg(pool)
const prisma = new PrismaClient({ adapter })

Key rules

  1. Import path: Always ./generated/prisma/client.js — not ./generated/prisma and not @prisma/client.

  2. Adapter is mandatory: new PrismaClient() with no arguments throws. new PrismaClient({ datasourceUrl: '...' }) also throws — datasourceUrl does not exist in Prisma 7.

  3. ESM required: The generated client uses ESM. Ensure package.json has "type": "module".

  4. Pool lifecycle: Call await pool.end() when shutting down (after prisma.$disconnect()).

Usage in application code

import 'dotenv/config'
import pg from 'pg'
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from './generated/prisma/client.js'

const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL })
const adapter = new PrismaPg(pool)
const prisma = new PrismaClient({ adapter })

// Create
const user = await prisma.user.create({
  data: { email: 'alice@example.com', name: 'Alice' },
})

// Read with relations
const posts = await prisma.post.findMany({
  where: { published: true },
  include: { author: true },
})

// Update
await prisma.post.update({
  where: { id: 1 },
  data: { published: true },
})

// Delete
await prisma.post.delete({ where: { id: 1 } })

// Cleanup
await prisma.$disconnect()
await pool.end()

Common mistakes

Mistake Error Fix
import { PrismaClient } from './generated/prisma' Cannot find module Use ./generated/prisma/client.js
new PrismaClient() PrismaClient needs non-empty options Pass { adapter }
new PrismaClient({ datasourceUrl: url }) Unknown property datasourceUrl Use adapter pattern instead
Missing "type": "module" in package.json ESM import errors Add "type": "module"
import { PrismaClient } from '@prisma/client' Wrong export Use ./generated/prisma/client.js