# Prisma Schema 修改后的操作指南

## 修改 schema.prisma 后需要执行的步骤

### 1. 生成 Prisma Client（必须）

```bash
cd backend
npx prisma generate
# 或使用 npm script
npm run prisma:generate
```

**作用**：根据最新的 schema 重新生成 Prisma Client，使 TypeScript 类型和代码与数据库结构同步。

---

### 2. 应用数据库迁移（必须）

根据环境选择不同的方式：

#### 开发环境（推荐）

```bash
cd backend
npx prisma migrate dev
# 或使用 npm script
npm run prisma:migrate
```

**作用**：

- 应用待执行的迁移到数据库
- 如果有新的迁移，会自动创建并应用
- 会重置开发数据库（如果使用 shadow database）

#### 生产环境

```bash
cd backend
npx prisma migrate deploy
# 或使用 npm script
npm run prisma:migrate:deploy
```

**作用**：

- 仅应用待执行的迁移，不会创建新迁移
- 不会重置数据库
- 适合生产环境使用

#### 快速同步（仅开发环境，不推荐用于生产）

```bash
cd backend
npx prisma db push
```

**作用**：

- 直接将 schema 变更推送到数据库
- 不创建迁移文件
- 适合快速原型开发

---

### 3. 重启应用（如果正在运行）

应用迁移后，需要重启 NestJS 应用以加载新的 Prisma Client：

```bash
# 如果使用 npm run start:dev，会自动重启
# 如果使用其他方式启动，需要手动重启
```

---

## 当前状态

✅ **已完成**：

- schema.prisma 已修改（content 字段改为 TEXT）
- 迁移文件已创建：`20251118211424_change_log_content_to_text`

⏳ **待执行**：

1. 生成 Prisma Client
2. 应用数据库迁移
3. 重启应用（如果正在运行）

---

## 执行顺序

```bash
# 1. 生成 Prisma Client
cd backend
npx prisma generate

# 2. 应用迁移（开发环境）
npx prisma migrate dev
# 或生产环境
npx prisma migrate deploy

# 3. 重启应用（如果需要）
# 如果使用 start:dev，会自动重启
```

---

## 验证迁移是否成功

```bash
# 检查迁移状态
npx prisma migrate status

# 查看数据库结构
npx prisma studio
```

---

## 注意事项

1. **生产环境**：务必使用 `prisma migrate deploy`，不要使用 `prisma migrate dev`
2. **备份数据**：在生产环境应用迁移前，建议先备份数据库
3. **迁移冲突**：如果迁移失败，检查错误信息并解决后再继续
4. **类型同步**：每次修改 schema 后都要运行 `prisma generate` 更新类型
