#!/bin/bash

port_primary=5432
port_secondary=5433

echo '=========='
echo '=Clean up='
echo '=========='

pg_ctl stop -D data_primary
pg_ctl stop -D data_secondary

rm -rf data_* *log

echo '======================='
echo '=Set up primary server='
echo '======================='

initdb -D data_primary

cat << EOF >> data_primary/postgresql.conf
wal_level = logical
port = $port_primary
log_replication_commands = 'on'
max_slot_wal_keep_size = 64kB
EOF

cat << EOF >> data_primary/pg_hba.conf
host all,replication all 0.0.0.0/0 trust
EOF

pg_ctl -D data_primary start -w -l primary.log
psql -d postgres -p $port_primary -c "CREATE TABLE tbl (id int primary key);"
psql -d postgres -p $port_primary -c "INSERT INTO tbl VALUES (1)"
psql -d postgres -p $port_primary -c "CREATE PUBLICATION pub FOR ALL TABLES"
psql -d postgres -p $port_primary -c " SELECT 'init' FROM pg_create_logical_replication_slot('logicalslot', 'test_decoding', false, false);"
psql -d postgres -p $port_primary -c "SELECT * FROM pg_create_physical_replication_slot('physical', true, false);"

psql -d postgres -p $port_primary -c "INSERT INTO tbl SELECT generate_series(3,100000,1);"

sleep 3

psql -d postgres -p $port_primary -c "SELECT * from pg_replication_slots;"
psql -d postgres -p $port_primary -c "CHECKPOINT;"

sleep 3


psql -d postgres -p $port_primary -c "SELECT * from pg_replication_slots;"



echo '========================='
echo '=Set up secondary server='
echo '========================='

pg_basebackup -D data_secondary -p $port_primary

cat << EOF >> data_secondary/postgresql.conf
port = $port_secondary
primary_conninfo = 'port=$port_primary application_name=secondary dbname=postgres'
primary_slot_name = 'physical'
hot_standby_feedback = on
#enable_syncslot = on
#max_slot_wal_keep_size = 64kB
EOF

cat << EOF >> data_secondary/standby.signal
EOF

pg_ctl -D data_secondary start -w -l secondary.log
