Files
buzz/crates/buzz-push-gateway/src/postgres/bootstrap_guard.sql
Tom Brow 76f7e5ef0c feat(push): make gateway origin configurable (#7261)
Make the push gateway origin configurable across the relay, gateway,
mobile client, and deployment chart.

This is a fresh deployment. The gateway has only run on personal
development infrastructure, and push has no existing enabled users.
Legacy migration, configured-to-unconfigured mobile transitions, and
rolling upgrades from pre-launch gateway binaries are not supported.

Populated pre-launch databases are rejected with an informative error
before migrations run; their data is untouched. Mobile builds may omit
the gateway URL, leaving push unavailable. Once push is enabled,
subsequent builds must retain that configuration.

### Validation

- All applicable CI checks pass at
`5f546cfaf403f0386f146d213adfb4392f4ec29c`, including Rust,
mobile/Swift, desktop/integration, security, image builds, and Helm
checks. An unrelated agent cancellation test passed on retry.
- PostgreSQL CI passed 384 tests, including the production-entry-point
regression for refusing populated pre-launch databases before
migrations, fresh initialization, and subsequent initialized
deployments.
- Focused local validation passed all 10 gateway PostgreSQL tests under
the CI discovery filter and all 3 unconfigured-mobile tests.
Repository-wide PostgreSQL discovery validation and the complete
pre-push hooks passed.
- Physical-device APNs/App Attest behavior and deployment to a live
cluster were not verified in this work.

---------

Signed-off-by: Tom Brow <tomb@block.xyz>
Co-authored-by: Codex <noreply@openai.com>
2026-09-15 14:56:45 -07:00

30 lines
1.2 KiB
SQL

-- This release supports fresh gateway initialization, not populated legacy
-- development databases. Run before migrations that could alter legacy data.
DO $$
DECLARE
initialized boolean := false;
populated boolean;
candidate record;
BEGIN
IF to_regclass('_sqlx_migrations') IS NOT NULL THEN
EXECUTE 'SELECT EXISTS (SELECT 1 FROM _sqlx_migrations WHERE version = 5 AND success)'
INTO initialized;
END IF;
-- Ordinary subsequent deployments of the initialized gateway retain data.
IF initialized THEN
RETURN;
END IF;
FOR candidate IN
SELECT schemaname, tablename FROM pg_tables
WHERE schemaname = current_schema() AND tablename <> '_sqlx_migrations'
LOOP
EXECUTE format('SELECT EXISTS (SELECT 1 FROM %I.%I)',
candidate.schemaname, candidate.tablename) INTO populated;
IF populated THEN
RAISE EXCEPTION 'Cannot initialize push gateway: non-empty pre-launch database (table %). Legacy upgrades are unsupported. Stop the development gateway and provision a fresh dedicated database. No migrations have run.', candidate.tablename;
END IF;
END LOOP;
END
$$;