name: Apply Caterium Basic Signup Migration on: push: branches: ["main"] paths: - ".github/workflows/migrate-basic-signup.yml" - "ops/sql/SUPABASE-V17.9.1-PUBLIC-BASIC-SIGNUP.sql" - "supabase/migrations/20260922102500_public_basic_signup.sql" workflow_dispatch: permissions: contents: read concurrency: group: caterium-basic-signup-migration cancel-in-progress: false jobs: migrate: runs-on: ubuntu-latest timeout-minutes: 8 env: SUPABASE_DB_URL: ${{ secrets.SUPABASE_DB_URL }} DATABASE_URL: ${{ secrets.DATABASE_URL }} CATERIUM_DB_URL: ${{ secrets.CATERIUM_DB_URL }} SUPABASE_DB_PASSWORD: ${{ secrets.SUPABASE_DB_PASSWORD }} SUPABASE_DATABASE_PASSWORD: ${{ secrets.SUPABASE_DATABASE_PASSWORD }} CATERIUM_DB_PASSWORD: ${{ secrets.CATERIUM_DB_PASSWORD }} steps: - uses: actions/checkout@v4 - name: Select configured database connection shell: bash run: | set -euo pipefail if [ -n "${SUPABASE_DB_URL:-}" ]; then echo "CATERIUM_PSQL_MODE=url" >> "$GITHUB_ENV" echo "CATERIUM_DATABASE_URL=$SUPABASE_DB_URL" >> "$GITHUB_ENV" elif [ -n "${CATERIUM_DB_URL:-}" ]; then echo "CATERIUM_PSQL_MODE=url" >> "$GITHUB_ENV" echo "CATERIUM_DATABASE_URL=$CATERIUM_DB_URL" >> "$GITHUB_ENV" elif [ -n "${DATABASE_URL:-}" ]; then echo "CATERIUM_PSQL_MODE=url" >> "$GITHUB_ENV" echo "CATERIUM_DATABASE_URL=$DATABASE_URL" >> "$GITHUB_ENV" else password="${SUPABASE_DB_PASSWORD:-${SUPABASE_DATABASE_PASSWORD:-${CATERIUM_DB_PASSWORD:-}}}" if [ -z "$password" ]; then echo "::error::No supported Caterium/Supabase database secret is configured." exit 2 fi echo "CATERIUM_PSQL_MODE=password" >> "$GITHUB_ENV" echo "PGHOST=db.usfjwhztqoopzzfmfbis.supabase.co" >> "$GITHUB_ENV" echo "PGPORT=5432" >> "$GITHUB_ENV" echo "PGDATABASE=postgres" >> "$GITHUB_ENV" echo "PGUSER=postgres" >> "$GITHUB_ENV" echo "PGPASSWORD=$password" >> "$GITHUB_ENV" echo "PGSSLMODE=require" >> "$GITHUB_ENV" fi - name: Apply only v17.9.1 public Basic signup migration shell: bash run: | set -euo pipefail if [ "${CATERIUM_PSQL_MODE}" = "url" ]; then psql "${CATERIUM_DATABASE_URL}" -v ON_ERROR_STOP=1 -f ops/sql/SUPABASE-V17.9.1-PUBLIC-BASIC-SIGNUP.sql else psql -v ON_ERROR_STOP=1 -f ops/sql/SUPABASE-V17.9.1-PUBLIC-BASIC-SIGNUP.sql fi - name: Verify server policy and workspace function shell: bash run: | set -euo pipefail query="select public.caterium_public_signup_policy(); select case when pg_get_functiondef('public.sun_create_workspace(text)'::regprocedure) like '%public_signup_basic%' and pg_get_functiondef('public.sun_create_workspace(text)'::regprocedure) like '%v_promo.plan_id%' then 'PASS' else 'FAIL' end;" if [ "${CATERIUM_PSQL_MODE}" = "url" ]; then result="$(psql "${CATERIUM_DATABASE_URL}" -v ON_ERROR_STOP=1 -Atc "$query")" else result="$(psql -v ON_ERROR_STOP=1 -Atc "$query")" fi printf '%s\n' "$result" grep -q "PASS" <<<"$result"