2025-01-10 11:12:03 +00:00
|
|
|
---
|
2024-12-06 14:38:42 +00:00
|
|
|
version: "2"
|
|
|
|
|
servers:
|
|
|
|
|
- engine: postgresql
|
2025-02-12 19:00:25 +00:00
|
|
|
uri: "${DB_URI_GENERATE}"
|
2024-12-06 14:38:42 +00:00
|
|
|
sql:
|
|
|
|
|
- name: "db"
|
|
|
|
|
engine: "postgresql"
|
2025-03-20 11:06:41 +00:00
|
|
|
queries: "internal/database/queries/"
|
|
|
|
|
schema: "internal/database/migrations"
|
2025-01-14 13:28:25 +00:00
|
|
|
rules:
|
|
|
|
|
- sqlc/db-prepare
|
|
|
|
|
- no-delete
|
|
|
|
|
- no-pg
|
|
|
|
|
- no-seq-scan
|
2025-05-05 09:31:21 +00:00
|
|
|
- too-costly
|
2024-12-06 14:38:42 +00:00
|
|
|
database:
|
|
|
|
|
managed: true
|
|
|
|
|
gen:
|
|
|
|
|
go:
|
|
|
|
|
package: "repository"
|
|
|
|
|
out: "internal/database/repository"
|
2025-01-10 11:12:03 +00:00
|
|
|
sql_package: "pgx/v5"
|
2025-01-15 12:19:49 +00:00
|
|
|
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
|
2025-03-20 11:06:41 +00:00
|
|
|
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
|
2025-04-08 12:44:09 +00:00
|
|
|
- db_type: "unsignedsmallint"
|
|
|
|
|
go_type: "uint16"
|
2025-01-14 13:28:25 +00:00
|
|
|
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"
|
2025-05-05 09:31:21 +00:00
|
|
|
rule: "postgresql.explain.plan.total_cost > 1000000000.0"
|
2025-01-14 13:28:25 +00:00
|
|
|
- name: no-seq-scan
|
|
|
|
|
message: "Query plan results in a sequential scan"
|
|
|
|
|
rule: "postgresql.explain.plan.node_type == 'Seq Scan'"
|