#!/usr/bin/env bash
# M2 Bab 7: cadangan (pg_dump) dan pemulihan (pg_restore) skema kph, lalu pemeriksaan jumlah baris.
# Penulis: Badar Mubarok Yogaswara. Koneksi lewat PGHOST, PGPORT, PGUSER (kata sandi: berkas pgpass atau PGPASSWORD, JANGAN ditulis di skrip).
# Pemakaian: bash m2_07d_cadangan.sh <folder tujuan berkas cadangan> ; PG_BIN bisa diisi folder bin PostgreSQL bila tidak ada di PATH.
set -euo pipefail
B="${PG_BIN:-}"; [ -n "$B" ] && B="$B/"
TUJUAN="${1:-.}"
BERKAS="$TUJUAN/kph_contoh.dump"
"${B}pg_dump" -Fc -n kph -f "$BERKAS" kph_contoh                                    # -Fc = format kustom (terkompres), -n = hanya skema kph
echo "ukuran cadangan: $(wc -c < "$BERKAS") byte"
"${B}psql" -d postgres -c "DROP DATABASE IF EXISTS kph_pulih" -c "CREATE DATABASE kph_pulih"
"${B}psql" -d kph_pulih -c "CREATE EXTENSION postgis" -c "CREATE EXTENSION pgrouting"   # ekstensi dibuat dulu di basis data tujuan
"${B}pg_restore" -d kph_pulih "$BERKAS"
for t in petak kejadian jalan sungai kesesuaian lembar_keputusan; do
  a=$("${B}psql" -d kph_contoh -Atc "SELECT count(*) FROM kph.$t"); b=$("${B}psql" -d kph_pulih -Atc "SELECT count(*) FROM kph.$t")
  echo "$t asal=$a pulih=$b $([ "$a" = "$b" ] && echo SAMA || echo BEDA)"
done
