32 lines
654 B
Plaintext
32 lines
654 B
Plaintext
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
DB_NAME="${1:?Usage: $0 <database_name>}"
|
|
|
|
echo "== Processing DB: $DB_NAME =="
|
|
|
|
SLOT="migrate_slot_${DB_NAME}"
|
|
SUB="migrate_sub_${DB_NAME}"
|
|
|
|
psql -d "$DB_NAME" -v ON_ERROR_STOP=1 <<SQL
|
|
DO \$\$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_subscription WHERE subname = '$SUB'
|
|
) THEN
|
|
CREATE SUBSCRIPTION $SUB
|
|
CONNECTION 'host=<%= @pg_host %> port=<%= @pg_port %> dbname=$DB_NAME user=<%= @pg_user %> password=<%= @pg_pass %>'
|
|
PUBLICATION migrate_pub
|
|
WITH (
|
|
slot_name = '$SLOT',
|
|
create_slot = false,
|
|
copy_data = false,
|
|
enabled = true
|
|
);
|
|
END IF;
|
|
END
|
|
\$\$;
|
|
SQL
|
|
|
|
echo "== Done =="
|