AgentSkillsCN

managing-prisma-migrations

根据项目约定,管理Prisma ORM的架构设计、迁移与查询模式。处理种子数据、关系建模以及类型安全的查询。在使用Prisma架构、创建迁移、编写数据库查询,或设置种子数据时使用此功能。

SKILL.md
--- frontmatter
name: managing-prisma-migrations
description: Manages Prisma ORM schema design, migrations, and query patterns following project conventions. Handles seed data, relation modeling, and type-safe queries. Use when working with Prisma schema, creating migrations, writing database queries, or setting up seed data.

Prisma Migrations & Queries

Schema conventions

Models use PascalCase. Fields use camelCase. Always include createdAt and updatedAt:

prisma
model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String?
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

Relations use explicit naming:

prisma
model Post {
  id       String @id @default(cuid())
  title    String
  author   User   @relation(fields: [authorId], references: [id], onDelete: Cascade)
  authorId String
}

Migration workflow

  1. Edit prisma/schema.prisma
  2. Generate migration: npx prisma migrate dev --name descriptive-name
  3. If migration fails, check the error and adjust schema. Do not use --force.
  4. After migration succeeds: npx prisma generate

Migration names use kebab-case describing the change: add-user-email-index, create-post-table.

Query patterns

Use Prisma Client with explicit select or include — never fetch all fields by default:

typescript
// Good: explicit select
const user = await prisma.user.findUnique({
  where: { id },
  select: { id: true, email: true, name: true }
});

// Good: explicit include for relations
const userWithPosts = await prisma.user.findUnique({
  where: { id },
  include: { posts: { orderBy: { createdAt: "desc" }, take: 10 } }
});

Seed data

Seed file at prisma/seed.ts. Use upsert for idempotent seeding:

typescript
await prisma.user.upsert({
  where: { email: "admin@example.com" },
  update: {},
  create: { email: "admin@example.com", name: "Admin" }
});

Run: npx prisma db seed