From badeefb9a98f9e910c056f22c46f644113e5e6bf Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Tue, 27 Oct 2026 11:50:49 -0700 Subject: [PATCH 1/5] feat(migrate): configure embedded Goose providers Use provider-local SQL and Go migrations, injected slog logging, and PostgreSQL session locking. Exercise timestamp migration flows and failures with SQLite and PostgreSQL, including concurrent startup, and require PostgreSQL integration coverage in CI. Refs #7 --- .gitea/workflows/ci.yml | 14 + README.md | 5 + go.mod | 23 ++ go.sum | 77 ++++ migrate/README.md | 110 ++++++ migrate/migrate.go | 56 +++ migrate/migrate_test.go | 368 ++++++++++++++++++ migrate/testdata/failure/00007_events.sql | 6 + .../failure/20261026093000_second.sql | 5 + .../failure/20261027114500_broken.sql | 6 + migrate/testdata/migrations/00007_events.sql | 6 + .../migrations/20261026093000_second.sql | 5 + .../migrations/20261027114500_third.sql | 5 + 13 files changed, 686 insertions(+) create mode 100644 migrate/README.md create mode 100644 migrate/migrate.go create mode 100644 migrate/migrate_test.go create mode 100644 migrate/testdata/failure/00007_events.sql create mode 100644 migrate/testdata/failure/20261026093000_second.sql create mode 100644 migrate/testdata/failure/20261027114500_broken.sql create mode 100644 migrate/testdata/migrations/00007_events.sql create mode 100644 migrate/testdata/migrations/20261026093000_second.sql create mode 100644 migrate/testdata/migrations/20261027114500_third.sql diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 266a719..2b3c537 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -15,6 +15,17 @@ on: jobs: check: runs-on: ubuntu-latest + services: + postgres: + image: postgres:18 + env: + POSTGRES_PASSWORD: migrate-test + POSTGRES_DB: migrate_test + options: >- + --health-cmd "pg_isready -U postgres -d migrate_test" + --health-interval 5s + --health-timeout 5s + --health-retries 10 steps: - uses: actions/checkout@v7.0.1 with: @@ -26,6 +37,9 @@ jobs: run: test -z "$(gofmt -l .)" - run: go vet ./... - run: go test -race ./... + env: + CI: "true" + MIGRATE_POSTGRES_DSN: postgres://postgres:migrate-test@postgres:5432/migrate_test?sslmode=disable - name: Require issue URLs in TODO comments run: | find . -type d \( -name .git -o -name node_modules -o -name vendor -o -name generated -o -name gen -o -name target -o -name dist -o -name build -o -name .svelte-kit -o -name .next \) -prune -o -type f \( -name '*.go' -o -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.svelte' -o -name '*.rs' -o -name '*.sql' -o -name '*.sh' -o -name '*.proto' -o -name '*.graphql' -o -name '*.yml' -o -name '*.yaml' -o -name '*.toml' \) -exec awk 'match($0, "((^|[^:])[/][/]|[/][*]|(^|[[:space:]])(#|--)|^[[:space:]]*([*]|