关于 rust-sqlx-postgres-service
rust-sqlx-postgres-service 是用于 Rust/Postgres 项目的技能,帮助以模式优先的方式进行编译检查且可测试的修改。它涵盖迁移、SQLx 查询、依赖注入、事务和验证流程。
主要功能
- 01先设计模式再编写仓储代码
- 02使用编译期检查的 SQLx 查询
- 03显式注入连接池和事务
- 04采用安全的迁移实践
- 05为行为变更添加集成测试
- 06运行 SQLx 和 Cargo 预检
适用场景
- 01为 Rust 服务添加 Postgres 模式变更
- 02使用 SQLx 编写仓储函数
- 03将多步数据库操作置于事务中
- 04验证迁移和 SQLx 元数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill rust-sqlx-postgres-service安装后在 Claude Code 中输入/rust-sqlx-postgres-service确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/migration-safety.mdsqlx-patterns.mdscripts/sqlx-preflight.sh详细介绍
Rust SQLx Postgres 服务
使用此技能以架构优先、编译检查和可测试的方式进行 Rust/Postgres 更改。优先采用显式迁移、注入连接池、精简的仓储函数,以及与业务操作相匹配的事务边界。
核心工作流
- 更改代码前,检查
Cargo.toml、migrations/、.sqlx/、docker-compose.yml、CI,以及现有的数据库辅助模块。 - 首先设计架构更改。先创建或更新迁移,再编写依赖该迁移的仓储代码。
- 优先使用
sqlx::query!和query_as!进行编译时 SQL 检查。仅当查询结构确实会在运行时变化时,才使用动态 SQL。 - 显式注入
PgPool、PgConnection或Transaction。不要在处理程序或仓储函数中创建连接池。 - 保持仓储函数精简,并根据行为命名。返回领域类型或持久化 DTO,而不要在应用中泄露原始行数据。
- 对必须一起提交或回滚的多步操作使用事务。
- 如果更改会影响 API 语义,添加或更新集成测试,以运行迁移并验证对外行为。
- 运行内置预检脚本,或运行仓库中等效的 SQLx/Cargo CI 命令。
迁移规则
更改现有表或数据前,请阅读 references/migration-safety.md。
默认的迁移偏好:
- 首先采用增量式更改:新增可空列、新表和新索引。
- 如果表可能很大,将数据回填与架构创建分开。
- 仅在现有数据满足条件后,才添加
not null、唯一性和外键约束。 - 对会出现在错误信息或运维操作中的约束和索引,使用明确的名称。
- 如果项目使用向下迁移,就保留它们;否则,在迁移评审中说明回滚预期。
查询规则
有关 SQLx 宏、事务和离线模式的详情,请阅读 references/sqlx-patterns.md。
- 优先使用绑定参数,而不是字符串插值。
- 对按键查找的操作使用
fetch_optional。 - 如果不需要行数据,对插入和更新使用
execute。 - 如果调用方需要生成的 ID 或时间戳,使用
RETURNING。 - 对目标应恰好为一行的更新和删除,检查受影响的行数。
- 在仓储层边界附近,将数据库唯一性冲突映射为领域错误。
验证
适用标准 SQLx 工作流时,请从 Rust 项目根目录运行:
path/to/rust-sqlx-postgres-service/scripts/sqlx-preflight.sh
此脚本采取保守策略:检查格式和测试;当 CLI 和 DATABASE_URL 可用时,检查 SQLx 迁移状态;当 .sqlx/ 或 DATABASE_URL 可用时,通过 cargo sqlx prepare --check 验证 SQLx 离线元数据;并且仅在设置了 RUST_SQLX_PREFLIGHT_RUN_MIGRATIONS=1 时应用迁移。
如果仓库使用不同的 CI 命令,请运行该命令并说明原因。
参考文件
references/sqlx-patterns.md:query!、query_as!、连接池、事务、功能标志和离线模式。references/migration-safety.md:安全的迁移顺序和发布检查。
评论
支持 Markdown