#!/bin/bash

#
# Run this script as root inside a service directory.
#

if [ -d "volumes" ]; then
  # Dump mysql
  if [ -d "volumes/mysql" ]; then
    CONTAINER_NAME=$(echo ${PWD##*/} | sed -e 's/\.//g')_mariadb
    DB_USER=$(docker exec $CONTAINER_NAME bash -c 'echo "$MYSQL_USER"')
    DB_PASSWORD=$(docker exec $CONTAINER_NAME bash -c 'echo "$MYSQL_PASSWORD"')
    DB_NAME=$(docker exec $CONTAINER_NAME bash -c 'echo "$MYSQL_DATABASE"')
    DUMP_NAME=datadump.sql
    docker exec -e MYSQL_PWD=$DB_PASSWORD $CONTAINER_NAME mariadb-dump -u $DB_USER $DB_NAME > volumes/$DUMP_NAME
  fi

  # Dump postgres
  if [ -d "volumes/postgres" ]; then
    CONTAINER_NAME=$(echo ${PWD##*/} | sed -e 's/\.//g')_postgres
    DB_USER=$(docker exec $CONTAINER_NAME bash -c 'echo "$POSTGRES_USER"')
    DB_PASSWORD=$(docker exec $CONTAINER_NAME bash -c 'echo "$POSTGRES_PASSWORD"')
    DB_NAME=$(docker exec $CONTAINER_NAME bash -c 'echo "$POSTGRES_DATABASE"')
    DUMP_NAME=datadump.sql
    docker exec -e PGPASSWORD=$DB_PASSWORD $CONTAINER_NAME pg_dump -U $DB_USER $DB_NAME > volumes/$DUMP_NAME
  fi

  # Compress all volumes excerpt mysql and postgres
  BACKUP=${PWD##*/}.tar.zst
  tar --exclude='mysql' --exclude='postgres' --zstd -cf /srv/$BACKUP -C volumes .

  # Put it into the storage box (pubkey needed)
  STORAGE_BOX=u442569@u442569.your-storagebox.de
  TODAY=$(date +%F)
  ssh -p23 $STORAGE_BOX "mkdir -p $TODAY"
  scp -P 23 /srv/$BACKUP $STORAGE_BOX:/home/$TODAY

  # Clean
  if [ -f "volumes/$DUMP_NAME" ]; then
    rm volumes/$DUMP_NAME
  fi
  rm /srv/$BACKUP
fi
