#!/bin/sh

set -e

USER=postgres
GROUP=postgres

EXTERNAL_ROOT=/srv
INTERNAL_DB_DIR=/data/postgresql/9.6/protect
INTERNAL_DB_DATADIR="$INTERNAL_DB_DIR/data"
EXTERNAL_DB_DIR=/srv/postgresql/9.6/protect
EXTERNAL_DB_DATADIR="$EXTERNAL_DB_DIR/data"

if [ -z "$(psql -U postgres -p 5432 unifi-protect -c '\q' 2>&1)" ]; then
  echo "Moving database to the new cluster"
  SOURCE_DB_DATADIR=$(pg_conftool -s 9.6 main show data_directory)

  if [ -d $EXTERNAL_ROOT ]; then
    TARGET_DB_DATADIR=$EXTERNAL_DB_DATADIR
    TARGET_DB_DIR=$EXTERNAL_DB_DIR
  else
    TARGET_DB_DATADIR=$INTERNAL_DB_DATADIR
    TARGET_DB_DIR=$INTERNAL_DB_DIR
  fi

  if [ ! -d $TARGET_DB_DIR ]; then
    mkdir -p $TARGET_DB_DIR
    chown $USER:$GROUP $TARGET_DB_DIR
  fi

  # Copy DB data to the new location
  rm -rf "${TARGET_DB_DATADIR:?}"/*
  # cp -pRT $SOURCE_DB_DATADIR $TARGET_DB_DATADIR
  # rm $TARGET_DB_DATADIR/postmaster.pid || true
  rsync -a ${SOURCE_DB_DATADIR}/ $TARGET_DB_DIR/
  rm $TARGET_DB_DATADIR/postmaster.pid || true

  # Remove Protect's DB from old cluster
  dropdb -U postgres -p 5432 unifi-protect
fi

exit 0
