用途:该技能提供在 NCPS 仓库中使用 sqlc 和数据库查询的操作说明。NCPS 支持 SQLite、PostgreSQL、MySQL 多种数据库引擎,sqlc 用于为每个引擎从 SQL 查询生成类型安全的 Go 代码。
配置:SQLC 配置文件为 sqlc.yml。查询文件按引擎区分:SQLite 为 db/query.sqlite.sql,PostgreSQL 为 db/query.postgres.sql,MySQL 为 db/query.mysql.sql。生成输出目录分别为 pkg/database/sqlitedb、pkg/database/postgresdb、pkg/database/mysqldb。
查询变更工作流:每当更新查询文件 db/query.<engine>.sql 后,必须依次执行两步。第一步运行 sqlc generate,更新所有引擎生成的 Go 文件。第二步运行 go generate ./pkg/database,该命令通过 go tool 调用 sqlc-multi-db,自动从 postgresdb 后端提取 Querier 接口,生成 pkg/database/querier.go 中的通用 Querier 接口、pkg/database/models.go 中的通用领域模型,以及 wrapper_sqlite.go、wrapper_postgres.go、wrapper_mysql.go 数据库包装器。注意不要手动编辑 pkg/database/querier.go 或 pkg/database/models.go,它们完全自动生成。
最佳实践:保持一致性,除非功能为特定引擎独有,否则应为所有支持的引擎提供等价查询。在运行 sqlc generate 前,使用 sqlfluff 对 SQL 文件进行 lint 和格式化,命令为 sqlfluff lint db/query..sql 和 sqlfluff format db/query..sql。
限制:资料未提供安装步骤、版本要求、错误处理或性能相关说明。