All skills
prisma avatar

/prisma-client-api

@808913c official
by prismaprisma/skills68 stars
7

Prisma Client API reference covering model queries, filters, operators, and client methods. Use when writing database queries, using CRUD operations, filtering data, or configuring Prisma Client. Triggers on "prisma query", "findMany", "create", "update", "delete", "$transaction".

Use this Skill: https://skilld.dev/gh/prisma/skills/prisma-client-api

This session only. Nothing lands on disk.

referencesconstructor.md

≈1.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

PrismaClient Constructor

Configure Prisma Client when instantiating.

Basic Instantiation

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

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })

Constructor Options

adapter (Required for the SQL provider workflow)

Driver adapter instance:

import { PrismaPg } from '@prisma/adapter-pg'

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })

accelerateUrl (For Accelerate users)

import { withAccelerate } from '@prisma/extension-accelerate'

const prisma = new PrismaClient({
  accelerateUrl: process.env.DATABASE_URL,  // prisma:// URL
}).$extends(withAccelerate())

log

Configure logging:

const prisma = new PrismaClient({
  adapter,
  log: ['query', 'info', 'warn', 'error'],
})
Log levels
Level Description
query All SQL queries
info Informational messages
warn Warnings
error Errors
Log to events
const prisma = new PrismaClient({
  adapter,
  log: [
    { level: 'query', emit: 'event' },
    { level: 'error', emit: 'stdout' },
  ],
})

prisma.$on('query', (e) => {
  console.log('Query:', e.query)
  console.log('Duration:', e.duration, 'ms')
})

errorFormat

Control error formatting:

const prisma = new PrismaClient({
  adapter,
  errorFormat: 'pretty',  // 'pretty' | 'colorless' | 'minimal'
})

comments

Attach SQL commenter plugins for observability, tracing, or query insights:

import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'
import { prismaQueryInsights } from '@prisma/sqlcommenter-query-insights'
import { queryTags, withQueryTags } from '@prisma/sqlcommenter-query-tags'
import { traceContext } from '@prisma/sqlcommenter-trace-context'

const prisma = new PrismaClient({
  adapter: new PrismaPg(process.env.DATABASE_URL!),
  comments: [prismaQueryInsights(), traceContext(), queryTags()],
})

await withQueryTags({ route: '/api/users', requestId: 'req-123' }, () =>
  prisma.user.findMany(),
)

Use comments only for SQL providers. This is the clean way to add trace or query-shape metadata without changing your query calls.

transactionOptions

Default transaction settings:

const prisma = new PrismaClient({
  adapter,
  transactionOptions: {
    maxWait: 5000,      // Max wait to acquire transaction (ms)
    timeout: 10000,     // Max transaction duration (ms)
    isolationLevel: 'Serializable',
  },
})

queryPlanCacheMaxSize

Use queryPlanCacheMaxSize to limit the in-memory query-plan cache:

const prisma = new PrismaClient({
  adapter,
  queryPlanCacheMaxSize: 2_000,
})

The value must be a non-negative integer. Set it to 0 to disable query-plan caching; omit it to use Prisma's default. Treat this as a process-local memory/performance control, not a database prepared-statement setting.

Singleton Pattern

Prevent multiple client instances in development:

// lib/prisma.ts
import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'

const globalForPrisma = globalThis as unknown as {
  prisma: PrismaClient | undefined
}

function createPrismaClient() {
  const adapter = new PrismaPg({
    connectionString: process.env.DATABASE_URL!
  })
  return new PrismaClient({ adapter })
}

export const prisma = globalForPrisma.prisma ?? createPrismaClient()

if (process.env.NODE_ENV !== 'production') {
  globalForPrisma.prisma = prisma
}

Next.js Pattern

// lib/prisma.ts
import { PrismaClient } from '@/generated/client'
import { PrismaPg } from '@prisma/adapter-pg'

const createAdapter = () => new PrismaPg({
  connectionString: process.env.DATABASE_URL!
})

const prismaClientSingleton = () => {
  return new PrismaClient({ adapter: createAdapter() })
}

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

const prisma = globalThis.prismaGlobal ?? prismaClientSingleton()

export default prisma

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

Query Events

Listen to query events:

const prisma = new PrismaClient({
  adapter,
  log: [{ level: 'query', emit: 'event' }],
})

prisma.$on('query', (e) => {
  console.log('Query:', e.query)
  console.log('Params:', e.params)
  console.log('Duration:', e.duration)
})

Log Events

prisma.$on('info', (e) => console.log(e.message))
prisma.$on('warn', (e) => console.warn(e.message))
prisma.$on('error', (e) => console.error(e.message))

Source: SKILL.md on GitHub

No alerts16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    This skill provides a comprehensive API reference for Prisma Client, covering CRUD operations, filtering, relations, and transactions. It includes documentation for raw SQL execution with explicit security warnings and best practices for preventing SQL injection. All external resources and packages are official components of the Prisma ecosystem.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • Runlayer7mo

    9 files scanned · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 808913c. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 29 minutes ago.

Activeupdated 2 months ago
metadata
{
  "author": "prisma",
  "version": "7.9.1"
}

README badge

README badge for prisma/skills/prisma-client-api

Provides API reference for Prisma Client CRUD operations, filtering, relations, transactions, and client configuration. Use when writing database queries, performing create/read/update/delete operations, or configuring PrismaClient instantiation.

Generated from the current SKILL.md.

Does this skill cover Prisma's generated client types and TypeScript support?
The skill focuses on Prisma Client API reference and query patterns. TypeScript support is implicit in the examples, but the skill does not provide dedicated guidance on type safety, generated types, or satisfies patterns beyond mentioning them in the client-methods category.
What versions of Prisma does this skill support?
The skill is versioned 7.6.0 and targets current Prisma projects. It assumes you are using a recent Prisma Client release with adapters and extensions support.
Does this cover schema definition or migrations?
No. This skill covers only Prisma Client runtime queries and operations. Schema definition, migrations, and introspection are outside its scope.
Can I use this skill for raw SQL queries?
Yes. The skill includes a raw-queries category covering $queryRaw and $executeRaw, with guidance on safety patterns for executing raw SQL directly.
Does this skill explain how to set up Prisma Client with different databases?
The skill covers client construction and adapter wiring (e.g. PrismaPg), but database-specific setup and configuration details are deferred to the constructor reference file.

Generated from the current SKILL.md. These answers refresh after source changes.