skills/prisma-client-api-model-queries/SKILL.md
Model Queries. Reference when using this Prisma feature.
npx skillsauth add prisma/cursor-plugin prisma-client-api-model-queriesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CRUD operations for your Prisma models.
Find a single record by unique field:
const user = await prisma.user.findUnique({
where: { id: 1 }
})
const user = await prisma.user.findUnique({
where: { email: '[email protected]' }
})
// Model with @@unique([firstName, lastName])
const user = await prisma.user.findUnique({
where: {
firstName_lastName: {
firstName: 'Alice',
lastName: 'Smith'
}
}
})
Same as findUnique but throws if not found:
const user = await prisma.user.findUniqueOrThrow({
where: { id: 1 }
})
// Throws PrismaClientKnownRequestError if not found
Find first matching record:
const user = await prisma.user.findFirst({
where: { role: 'ADMIN' },
orderBy: { createdAt: 'desc' }
})
const user = await prisma.user.findFirstOrThrow({
where: { role: 'ADMIN' }
})
Find multiple records:
const users = await prisma.user.findMany({
where: { role: 'USER' },
orderBy: { name: 'asc' },
take: 10,
skip: 0
})
Create a single record:
const user = await prisma.user.create({
data: {
email: '[email protected]',
name: 'Alice'
}
})
const user = await prisma.user.create({
data: {
email: '[email protected]',
posts: {
create: [
{ title: 'First Post' },
{ title: 'Second Post' }
]
}
},
include: { posts: true }
})
Create multiple records:
const result = await prisma.user.createMany({
data: [
{ email: '[email protected]', name: 'Alice' },
{ email: '[email protected]', name: 'Bob' }
],
skipDuplicates: true // Skip records with duplicate unique fields
})
// Returns { count: 2 }
Create multiple and return them:
const users = await prisma.user.createManyAndReturn({
data: [
{ email: '[email protected]', name: 'Alice' },
{ email: '[email protected]', name: 'Bob' }
]
})
// Returns array of created users
Update a single record:
const user = await prisma.user.update({
where: { id: 1 },
data: { name: 'Alice Smith' }
})
const post = await prisma.post.update({
where: { id: 1 },
data: {
views: { increment: 1 },
likes: { decrement: 1 },
score: { multiply: 2 },
rating: { divide: 2 },
version: { set: 5 }
}
})
Update multiple records:
const result = await prisma.user.updateMany({
where: { role: 'USER' },
data: { verified: true }
})
// Returns { count: 42 }
const users = await prisma.user.updateManyAndReturn({
where: { role: 'USER' },
data: { verified: true }
})
// Returns array of updated users
Update or create:
const user = await prisma.user.upsert({
where: { email: '[email protected]' },
update: { name: 'Alice Smith' },
create: { email: '[email protected]', name: 'Alice' }
})
Delete a single record:
const user = await prisma.user.delete({
where: { id: 1 }
})
// Returns deleted record
Delete multiple records:
const result = await prisma.user.deleteMany({
where: { role: 'GUEST' }
})
// Returns { count: 5 }
// Delete all
const result = await prisma.user.deleteMany({})
const count = await prisma.user.count({
where: { role: 'ADMIN' }
})
const result = await prisma.post.aggregate({
_avg: { views: true },
_sum: { views: true },
_min: { views: true },
_max: { views: true },
_count: { _all: true }
})
const groups = await prisma.user.groupBy({
by: ['country'],
_count: { _all: true },
_avg: { age: true },
having: {
age: { _avg: { gt: 30 } }
}
})
| Method | Returns |
|--------|---------|
| findUnique | Record | null |
| findUniqueOrThrow | Record (throws if not found) |
| findFirst | Record | null |
| findFirstOrThrow | Record (throws if not found) |
| findMany | Record[] |
| create | Record |
| createMany | { count: number } |
| createManyAndReturn | Record[] |
| update | Record |
| updateMany | { count: number } |
| delete | Record |
| deleteMany | { count: number } |
| count | number |
| aggregate | Aggregate result |
| groupBy | Group result[] |
databases
Schema Changes. Reference when using this Prisma feature.
tools
Removed Features. Reference when using this Prisma feature.
tools
Prisma Config. Reference when using this Prisma feature.
tools
ESM Support. Reference when using this Prisma feature.