--- version: "2" servers: - engine: postgresql uri: "${DB_URI_GENERATE}" sql: - name: "db" engine: "postgresql" queries: "internal/database/queries/" schema: "internal/database/migrations" rules: - sqlc/db-prepare - no-delete - no-pg - no-seq-scan - too-costly database: managed: true gen: go: package: "repository" out: "internal/database/repository" sql_package: "pgx/v5" emit_pointers_for_null_types: true emit_empty_slices: true emit_db_tags: true emit_result_struct_pointers: true emit_params_struct_pointers: true emit_enum_valid_method: true emit_sql_as_comment: true overrides: - db_type: "uuid" go_type: import: "github.com/google/uuid" type: "UUID" - db_type: "uuid" nullable: true go_type: import: "github.com/google/uuid" type: "UUID" pointer: true - db_type: "unsignedsmallint" go_type: "uint16" rules: - name: no-pg message: "invalid engine: not postgresql" rule: | config.engine != "postgresql" - name: no-delete message: "don't use delete statements" rule: | query.sql.contains("DELETE") - name: too-costly message: "Query cost estimate is too high" rule: "postgresql.explain.plan.total_cost > 1000000000.0" - name: no-seq-scan message: "Query plan results in a sequential scan" rule: "postgresql.explain.plan.node_type == 'Seq Scan'"