关于 faasjs-pg
faasjs-pg 是用于 FaasJS 项目中 PostgreSQL 开发的技能,涵盖类型化查询、模式迁移、事务和数据库测试。
主要功能
- 01类型化 QueryBuilder 指南
- 02模式与迁移实践
- 03事务与锁定指南
- 04数值类型边界指南
- 05PostgreSQL 测试实践
适用场景
- 01设计类型化 PostgreSQL 查询
- 02规划可逆的模式迁移
- 03测试事务与锁定行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ faasjs/ faasjs --skill faasjs-pg安装后在 Claude Code 中输入/faasjs-pg确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/guidelines/pg-numeric-boundaries.mdpg-query-builder.mdpg-schema-and-migrations.mdpg-table-types.mdpg-testing.mdpg-transactions-and-locking.md详细介绍
FaasJS PostgreSQL
默认工作流
- 保持表声明、迁移、查询和测试一致。
- 优先使用类型化的
QueryBuilder子句,再使用原始 SQL。 - 对原始 SQL 中的值使用参数化,并明确界定可信边界。
- 让迁移保持确定性、可按字典序排序,并尽可能可逆。
- 如果查询推断属于行为的一部分,请将运行时数据库断言与类型断言配对使用。
- 如果原子性或行锁很重要,请使用显式事务和并发测试。
加载这些参考资料
- 关于
Tables上的声明合并和具体行结构:references/guidelines/pg-table-types.md。 - 关于
QueryBuilder、别名、原始 SQL、更新表达式、returning和边缘语义:references/guidelines/pg-query-builder.md。 - 关于事务模式、事务客户端生命周期、行锁、重试责任归属和并发测试:
references/guidelines/pg-transactions-and-locking.md。 - 关于跨 TypeScript 和 API 边界的精确
numeric、decimal和bigint值:references/guidelines/pg-numeric-boundaries.md。 - 关于带时间戳的迁移、
SchemaBuilder、TableBuilder和模式执行:references/guidelines/pg-schema-and-migrations.md。 - 关于
PgVitestPlugin()、共享迁移快照、按文件隔离数据库、DATABASE_URL和expectTypeOf(...):references/guidelines/pg-testing.md。
注意事项
- 将
Tables声明视为查询推断的真实来源。 - 有意识地使用原始 SQL;将重复的原始 SQL 转为共享辅助函数或构建器子句。
- 写入查询和事务必须受调用方作用域及预期失败处理的保护;切勿让事务客户端逃逸其回调。
- 让
PgVitestPlugin()负责惰性全局设置:它会迁移一个限定于本次运行的快照,并为每个使用数据库的测试文件提供独立克隆。 - 如果事务还调用
enqueueJob,请加载 FaasJS API And Jobs,并测试业务数据和任务行是否都能回滚。 - 迁移和 PG 集成测试命令需要
DATABASE_URL。
验证
- 如果模式变更需要验证迁移,且
DATABASE_URL可用,请运行npx faasjs-pg migrate。 - 使用
vp test <pattern>运行针对性的 PG 测试。 - 更改对类型敏感的查询行为时,请包含
expectTypeOf(...)。 - 对于锁或并发行为,请使用相互重叠的真实事务;仅断言生成的 SQL 并不足够。
评论
支持 Markdown