Working with sqlc and database queries
This skill provides instructions for working with sqlc and database queries in the NCPS repository. NCPS supports multiple database engines (SQLite, PostgreSQL, MySQL), and sqlc is used to generate type-safe Go code from SQL queries for each engine.
sqlc.ymldb/query.sqlite.sqldb/query.postgres.sqldb/query.mysql.sqlpkg/database/sqlitedbpkg/database/postgresdbpkg/database/mysqldbAny time a query file (db/query.<engine>.sql) is updated, you MUST follow these steps:
Run the sqlc generate command to update the generated Go files for all engines.
sqlc generate
Run go generate for the pkg/database package. This command uses sqlc-multi-db (via go tool) to automatically:
Querier interface from the postgresdb backend.Querier interface in pkg/database/querier.go.pkg/database/models.go.wrapper_sqlite.go, wrapper_postgres.go, wrapper_mysql.go).go generate ./pkg/database
[!IMPORTANT] Do NOT manually edit
pkg/database/querier.goorpkg/database/models.go. They are fully automated.
Consistency: Ensure that equivalent queries exist for all supported engines unless the feature is engine-specific.
Linting: Use sqlfluff to lint and format SQL files before running sqlc generate.
sqlfluff lint db/query.*.sql
sqlfluff format db/query.*.sql