/** * Drizzle ORM 配置文件 * * 用于配置数据库连接、迁移和 schema 生成 * 支持从环境变量读取配置 */ import type { Config } from 'drizzle-kit'; import * as dotenv from 'dotenv'; // 加载环境变量 dotenv.config(); // 1. `makeSQL` (drizzle-kit generate): // - 作用:根据 `schema.ts` 文件中的定义生成 SQL 迁移文件 // - 具体功能: // - 比较当前数据库状态和 schema 定义的差异 // - 在 `src/drizzle` 目录下生成新的迁移文件(如 `0000_green_doorman.sql`) // - 同时更新 `meta/_journal.json` 记录迁移历史 // - 使用场景:当你修改了 `schema.ts` 中的表结构定义后,需要生成对应的 SQL 迁移文件 // - 执行命令:`npm run makeSQL` // 2. `makeEntity` (drizzle-kit introspect): // - 作用:从现有数据库反向生成 TypeScript 实体定义 // - 具体功能: // - 扫描数据库中的表结构 // - 自动生成对应的 TypeScript 类型定义 // - 在 `src/drizzle/schema.ts` 中生成表结构代码 // - 使用场景: // - 当你有一个现成的数据库,想要快速生成对应的 TypeScript 类型定义 // - 数据库表结构发生变化,需要更新 TypeScript 定义 // - 执行命令:`npm run makeEntity` // 3. `syncDB` (drizzle-kit migrate): // - 作用:将生成的 SQL 迁移文件同步到数据库 // - 具体功能: // - 读取 `src/drizzle` 目录下的迁移文件 // - 按照迁移历史记录的顺序执行 SQL 语句 // - 将数据库结构更新到最新状态 // - 使用场景: // - 当你生成了新的迁移文件后,需要将这些更改应用到数据库 // - 团队协作时,需要同步其他人的数据库更改 // - 执行命令:`npm run syncDB` // 典型的工作流程是: // 1. 修改 `schema.ts` 中的表结构定义 // 2. 运行 `makeSQL` 生成迁移文件 // 3. 检查生成的 SQL 文件是否正确 // 4. 运行 `syncDB` 将更改同步到数据库 // 如果你是从现有数据库开始,可以: // 1. 运行 `makeEntity` 生成 TypeScript 定义 // 2. 根据需要修改生成的代码 // 3. 运行 `makeSQL` 和 `syncDB` 同步更改 // 这些命令都是通过 `drizzle-kit` 工具提供的,它提供了完整的数据库迁移和类型生成功能。 export default { schema: './src/drizzle/schema.ts', out: './src/drizzle', dialect: 'mysql', dbCredentials: { host: process.env.DB_HOST || 'localhost', port: Number(process.env.DB_PORT) || 3306, user: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD || 'root', database: process.env.DB_NAME || 'star_tune', }, verbose: true, strict: true, introspect: { // 启用驼峰命名 casing: 'camel', }, } satisfies Config;