#!/bin/sh

set -e

# Default configuration
DATABASES=''
BACKUP_DIR=/data/backup/postgresql
RETENTION_DAYS=7

if ! . /etc/mkpsqlbackup.conf ; then
	echo '[MKPSQLBACKUP] : Unable to load configuration file' >&2
	exit 1
fi

if [ "$(id -un)" != 'postgres' ] ; then
	echo '[MKPSQLBACKUP] : This script must be run as postgres user' >&2
	exit 2
fi

FINAL_BACKUP_DIR="$BACKUP_DIR/$(date '+%Y-%m-%d')"
echo "[MKPSQLBACKUP] : Creating backup directory $FINAL_BACKUP_DIR"
if ! mkdir -p "$FINAL_BACKUP_DIR" ; then
	echo "[MKPSQLBACKUP] : Unable to create backup directory $FINAL_BACKUP_DIR"
	exit 3
fi

for db in $DATABASES ; do
	echo "[MKPSQLBACKUP] : Backup of $db"
	if ! pg_dump -Fc "$db" -f "$FINAL_BACKUP_DIR/$db" ; then
		echo "[MKPSQLBACKUP] : Unable to backup database $db" >&2
	fi
done

echo '[MKPSQLBACKUP] : Purging old backups'
find "$BACKUP_DIR" -maxdepth 1 -mindepth 1 -mtime +"$RETENTION_DAYS" -exec rm -rf '{}' ';'
