fix: dav prod-tag test panic (DB init in package init), README SPV-only VAT claim

Quick wins from the Loop B close-out:
- backend/internal/dav/service_prod.go: package-level init() connected to
  postgres and panicked when the DB was unreachable — breaking bare-shell
  'go test -tags test,!dev' and any CI test-prod run without a live service.
  init() now skips connecting under GO_TESTING (the pipeline sets it) or
  DAV_SKIP_INIT, and defaults POSTGRES_HOST to 127.0.0.1 (the pipeline
  postgres-service address, matching testutils/testdb) so real prod builds
  still connect. The test suite wires its own pool in TestMain.
- README.md:21: corrected stale 'Gift card SPV/MPV VAT treatment configurable'
  to the SPV-only posture (a stored MPV is overridden to SPV at read time).

Verified: 26/26 dev packages, both vet tags clean.
This commit is contained in:
2026-08-22 00:34:50 +01:00
parent dfe856b181
commit 4e64e32f09
2 changed files with 11 additions and 6 deletions
+10 -5
View File
@@ -13,21 +13,26 @@ import (
var Service *BaseService
func init() {
// Test builds wire their own pool in TestMain (testutils/testdb) — a real
// connect here would race that and panic a bare-shell `go test`. Skip.
if os.Getenv("GO_TESTING") != "" || os.Getenv("DAV_SKIP_INIT") != "" {
return
}
if err := connect(); err != nil {
// Don't fatal in test mode - tests will use testdb instead
if os.Getenv("DAV_SKIP_INIT") != "" {
return
}
panic("failed to initialize prod service: " + err.Error())
}
}
func connect() error {
host := getEnv("POSTGRES_HOST")
if host == "" {
host = "127.0.0.1" // pipeline postgres service default
}
dsn := fmt.Sprintf(
"postgres://%s:%s@%s:5432/%s?timezone=UTC&require_auth=scram-sha-256",
getEnv("POSTGRES_USER"),
getEnv("POSTGRES_PASSWORD"),
getEnv("POSTGRES_HOST"),
host,
getEnv("POSTGRES_DB"),
)
pool, err := pgxpool.New(context.Background(), dsn)