54 lines
2.1 KiB
Bash
54 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
export PGHOST="$PGHOST"
|
|
export PGPORT="$PGPORT"
|
|
export PGUSER="$PGUSER"
|
|
export PGPASSWORD="$PGPASSWORD"
|
|
export PGDATABASE="$PGDATABASE"
|
|
|
|
# Explanation of pg_dump flags:
|
|
#
|
|
# --schema-only omit data like migration history, pgsodium key, etc.
|
|
# --exclude-schema omit internal schemas as they are maintained by platform
|
|
#
|
|
# Explanation of sed substitutions:
|
|
#
|
|
# - do not alter superuser role "supabase_admin"
|
|
# - do not alter foreign data wrappers owner
|
|
# - do not include ACL changes on internal schemas
|
|
# - do not include RLS policies on cron extension schema
|
|
# - do not include event triggers
|
|
# - do not create pgtle schema and extension comments
|
|
# - do not create publication "supabase_realtime"
|
|
pg_dump \
|
|
--schema-only \
|
|
--quote-all-identifier \
|
|
--exclude-schema "${EXCLUDED_SCHEMAS:-}" \
|
|
${EXTRA_FLAGS:-} \
|
|
| sed -E 's/^CREATE SCHEMA "/CREATE SCHEMA IF NOT EXISTS "/' \
|
|
| sed -E 's/^CREATE TABLE "/CREATE TABLE IF NOT EXISTS "/' \
|
|
| sed -E 's/^CREATE SEQUENCE "/CREATE SEQUENCE IF NOT EXISTS "/' \
|
|
| sed -E 's/^CREATE VIEW "/CREATE OR REPLACE VIEW "/' \
|
|
| sed -E 's/^CREATE FUNCTION "/CREATE OR REPLACE FUNCTION "/' \
|
|
| sed -E 's/^CREATE TRIGGER "/CREATE OR REPLACE TRIGGER "/' \
|
|
| sed -E 's/^CREATE PUBLICATION "supabase_realtime/-- &/' \
|
|
| sed -E 's/^CREATE EVENT TRIGGER /-- &/' \
|
|
| sed -E 's/^ WHEN TAG IN /-- &/' \
|
|
| sed -E 's/^ EXECUTE FUNCTION /-- &/' \
|
|
| sed -E 's/^ALTER EVENT TRIGGER /-- &/' \
|
|
| sed -E 's/^ALTER PUBLICATION "supabase_realtime_/-- &/' \
|
|
| sed -E 's/^ALTER FOREIGN DATA WRAPPER (.+) OWNER TO /-- &/' \
|
|
| sed -E 's/^ALTER DEFAULT PRIVILEGES FOR ROLE "supabase_admin"/-- &/' \
|
|
| sed -E "s/^GRANT (.+) ON (.+) \"(${EXCLUDED_SCHEMAS:-})\"/-- &/" \
|
|
| sed -E "s/^REVOKE (.+) ON (.+) \"(${EXCLUDED_SCHEMAS:-})\"/-- &/" \
|
|
| sed -E 's/^(CREATE EXTENSION IF NOT EXISTS "pg_tle").+/\1;/' \
|
|
| sed -E 's/^(CREATE EXTENSION IF NOT EXISTS "pgsodium").+/\1;/' \
|
|
| sed -E 's/^COMMENT ON EXTENSION (.+)/-- &/' \
|
|
| sed -E 's/^CREATE POLICY "cron_job_/-- &/' \
|
|
| sed -E 's/^ALTER TABLE "cron"/-- &/' \
|
|
| sed -E "${EXTRA_SED:-}"
|
|
|
|
# Reset session config generated by pg_dump
|
|
echo "RESET ALL;"
|