diff --git a/.trae/rules/sqlite-rules.md b/.trae/rules/sqlite-rules.md new file mode 100644 index 00000000..c0067df7 --- /dev/null +++ b/.trae/rules/sqlite-rules.md @@ -0,0 +1,62 @@ +# SQLite 数据库操作规则 + +## 参数占位符 + +使用 `$1, $2, $3...` 作为参数占位符,**禁止使用 `?`**: + +```typescript +// 正确 +await db.execute( + "INSERT INTO Table(key, value) VALUES ($1, $2)", + [key, value] +); + +// 错误 +await db.execute( + "INSERT INTO Table(key, value) VALUES (?, ?)", + [key, value] +); +``` + +## 异步模式 + +所有数据库操作返回 Promise,必须使用 `await`: + +```typescript +// 正确 +const result = await db.execute(sql, params); + +// 错误 - 不处理 Promise +db.execute(sql, params); +``` + +## 插入/更新模式 + +使用 `ON CONFLICT` 处理插入或更新: + +```typescript +await db.execute( + `INSERT INTO Table(key, value, updated) + VALUES ($1, $2, datetime('now', 'localtime')) + ON CONFLICT(key) DO UPDATE SET value = $2, updated = datetime('now', 'localtime');`, + [key, value], +); +``` + +## 查询模式 + +```typescript +const rows = await db.select( + "SELECT * FROM Table WHERE id = $1", + [id], +); +``` + +## 路径别名 + +数据库相关代码使用以下别名: + +| 别名 | 路径 | +|------|------| +| `@Sql/*` | `./src/plugins/Sqlite/*` | +| `@Sqlm/*` | `./src/plugins/Sqlite/modules/*` | \ No newline at end of file