#!/bin/bash

cluster=${1}
version=${2}
history=${3}

dest=/var/lib/postgresql/${version}/main

START_POSTGRESQL='sudo /bin/systemctl start postgresql'
STOP_POSTGRESQL='sudo /bin/systemctl stop postgresql'

url=http://consul.internal.justin.tv/v1/kv/backups/db/${cluster}/latest?dc=us-west2
latest=$(curl -s ${url} | jq --raw-output '.[0].Value' | base64 --decode)
echo "Stopping PostgreSQL"
${STOP_POSTGRESQL}
rm -rf "${dest}"
mkdir -p "${dest}"
echo "Starting recovery to ${latest} at $(date +'%F %T %Z')."
envdir /etc/wal-e.d/env /var/lib/postgresql/virt_env/wal_e/bin/wal-e --aws-instance-profile backup-fetch ${dest} LATEST
echo "Recover to ${latest} done at $(date +'%F %T %Z')."
echo "Copying history file from ${history} to pg_xlog"
/usr/local/bin/aws s3 cp --recursive ${history} ${dest}/pg_xlog/
recovery=${dest}/recovery.conf
echo "Writing recovery into ${recovery}"
echo "restore_command = 'envdir /etc/wal-e.d/env /var/lib/postgresql/virt_env/wal_e/bin/wal-e --aws-instance-profile wal-fetch \"%f\" \"%p\"'"  > ${recovery}
echo "recovery_target_time = '${latest}'"  >> ${recovery}
echo 'recovery_target_action = promote' >> ${recovery}
echo "Starting PostgreSQL"
${START_POSTGRESQL}
echo "Done with preparing export at $(date +'%F %T %Z')."
