github.com/supabase/cli@v1.168.1/internal/db/dump/templates/dump_schema.sh (about)

     1  #!/usr/bin/env bash
     2  set -euo pipefail
     3  
     4  export PGHOST="$PGHOST"
     5  export PGPORT="$PGPORT"
     6  export PGUSER="$PGUSER"
     7  export PGPASSWORD="$PGPASSWORD"
     8  export PGDATABASE="$PGDATABASE"
     9  
    10  # Explanation of pg_dump flags:
    11  #
    12  #   --schema-only     omit data like migration history, pgsodium key, etc.
    13  #   --exclude-schema  omit internal schemas as they are maintained by platform
    14  #
    15  # Explanation of sed substitutions:
    16  #
    17  #   - do not alter superuser role "supabase_admin"
    18  #   - do not alter foreign data wrappers owner
    19  #   - do not include ACL changes on internal schemas
    20  #   - do not include RLS policies on cron extension schema
    21  #   - do not include event triggers
    22  #   - do not create pgtle schema and extension comments
    23  #   - do not create publication "supabase_realtime"
    24  pg_dump \
    25      --schema-only \
    26      --quote-all-identifier \
    27      --exclude-schema "${EXCLUDED_SCHEMAS:-}" \
    28      ${EXTRA_FLAGS:-} \
    29  | sed -E 's/^CREATE SCHEMA "/CREATE SCHEMA IF NOT EXISTS "/' \
    30  | sed -E 's/^CREATE TABLE "/CREATE TABLE IF NOT EXISTS "/' \
    31  | sed -E 's/^CREATE SEQUENCE "/CREATE SEQUENCE IF NOT EXISTS "/' \
    32  | sed -E 's/^CREATE VIEW "/CREATE OR REPLACE VIEW "/' \
    33  | sed -E 's/^CREATE FUNCTION "/CREATE OR REPLACE FUNCTION "/' \
    34  | sed -E 's/^CREATE TRIGGER "/CREATE OR REPLACE TRIGGER "/' \
    35  | sed -E 's/^CREATE PUBLICATION "supabase_realtime"/-- &/' \
    36  | sed -E 's/^CREATE EVENT TRIGGER /-- &/' \
    37  | sed -E 's/^         WHEN TAG IN /-- &/' \
    38  | sed -E 's/^   EXECUTE FUNCTION /-- &/' \
    39  | sed -E 's/^ALTER EVENT TRIGGER /-- &/' \
    40  | sed -E 's/^ALTER FOREIGN DATA WRAPPER (.+) OWNER TO /-- &/' \
    41  | sed -E 's/^ALTER DEFAULT PRIVILEGES FOR ROLE "supabase_admin"/-- &/' \
    42  | sed -E "s/^GRANT (.+) ON (.+) \"(${EXCLUDED_SCHEMAS:-})\"/-- &/" \
    43  | sed -E "s/^REVOKE (.+) ON (.+) \"(${EXCLUDED_SCHEMAS:-})\"/-- &/" \
    44  | sed -E 's/^(CREATE EXTENSION IF NOT EXISTS "pg_tle").+/\1;/' \
    45  | sed -E 's/^COMMENT ON EXTENSION (.+)/-- &/' \
    46  | sed -E 's/^CREATE POLICY "cron_job_/-- &/' \
    47  | sed -E 's/^ALTER TABLE "cron"/-- &/' \
    48  | sed -E "${EXTRA_SED:-}" \
    49  | uniq
    50  
    51  # Reset session config generated by pg_dump
    52  echo "RESET ALL;"