diff --git a/.gitignore b/.gitignore index c8d03913..8a7669cb 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,5 @@ Thumbs.db *.mov *.wmv +# Devbox +.devbox/ \ No newline at end of file diff --git a/.yamllint.yml b/.yamllint.yml index 8815833d..d9d1b77d 100644 --- a/.yamllint.yml +++ b/.yamllint.yml @@ -2,3 +2,5 @@ extends: default ignore: | vendor/ + .devbox/ + out/ diff --git a/README.md b/README.md index 6bd2fe51..e55df6e8 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,8 @@ Using the following project as a baseline: https://github.com/golang-standards/p - Install devbox: `https://www.jetify.com/docs/devbox/installing_devbox` - Ubuntu/MacOS: `curl -fsSL https://get.jetify.com/devbox | bash` +- Run `devbox run init` to create init dependencies - Run `devbox shell` to enter the environment -- Create `.env` file to add environment variables -- Run `direnv allow` to ensure environment variables are populated - Run `task deps:download` to download code dependencies - (IF NECESSARY) Ensure user in docker group and docker group is in sudo group ``` diff --git a/devbox.json b/devbox.json index 964b334f..9653c71a 100644 --- a/devbox.json +++ b/devbox.json @@ -18,11 +18,11 @@ ], "shell": { "init_hook": [ - "DB_URI=postgres://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=disable", + "export DB_URI=postgres://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=disable", "echo 'Welcome to the DoczyAI devbox!'" ], "scripts": { - "deps:download": [ + "init": [ "task deps:download" ] } diff --git a/internal/queue/listener_test.go b/internal/queue/listener_test.go index 726ea2dc..b3abb8d1 100644 --- a/internal/queue/listener_test.go +++ b/internal/queue/listener_test.go @@ -25,6 +25,8 @@ func TestNew(t *testing.T) { return MockController{} } + t.Setenv("QUEUE_URL", "example_url") + queue.NewServer(ctx, &queue.ListenerConfig{ Controller: controller, BasePath: "../..", diff --git a/scripts/Taskfile.yml b/scripts/Taskfile.yml index 2e2efc87..80e74b0e 100644 --- a/scripts/Taskfile.yml +++ b/scripts/Taskfile.yml @@ -28,6 +28,9 @@ includes: taskfile: database.yml tasks: + init: + cmds: + - touch .env fullsuite: deps: - lint diff --git a/sqlc.yml b/sqlc.yml index c3e153e0..2e36dc5e 100644 --- a/sqlc.yml +++ b/sqlc.yml @@ -8,6 +8,12 @@ sql: engine: "postgresql" queries: "database/queries/" schema: "database/migrations" + rules: + - sqlc/db-prepare + - no-delete + - no-pg + - no-seq-scan + - too-costly database: managed: true gen: @@ -15,3 +21,18 @@ sql: package: "repository" out: "internal/database/repository" sql_package: "pgx/v5" +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 > 400.0" + - name: no-seq-scan + message: "Query plan results in a sequential scan" + rule: "postgresql.explain.plan.node_type == 'Seq Scan'"