#!/bin/bash

#
# ScoDoc: save all user data (database, configs, images, archives...) in separate directory
# 
#  Utile pour migrer ScoDoc version 9 (et plus) d'un serveur a un autre
#  Executer en tant que scodoc sur le serveur d'origine.
#  Utiliser - pour sortir sur la sortie standard (eg pipe dans ssh...)
#
# E. Viennet, Sept 2011, Aug 2020, Aug 21
#

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source "$SCRIPT_DIR/config.sh"
source "$SCRIPT_DIR/utils.sh"

if [ "$(id -nu)" != "$SCODOC_USER" ]
then
 echo "$0: script must be runned as user $SCODOC_USER"
 exit 1
fi

echo "vérification de la configuration..."
DB_CURRENT=$(cd $SCODOC_DIR && source venv/bin/activate && flask scodoc-database -n)
if [ $DB_CURRENT != 'SCODOC' ]; then
  echo "Ce script ne peut transférer les données que depuis une base nommée SCODOC (c'est normalement le cas pour un serveur en production)"
  echo "Annulation"
  exit 1
fi

echo "Ce script est utile pour transférer toutes les données d'un serveur ScoDoc 9"
echo "à un autre ScoDoc 9."
echo "Il est vivement recommandé de mettre à jour votre ScoDoc avant."
echo ""
echo -n "Voulez-vous poursuivre cette sauvegarde ? (y/n) [n]"
read -r ans
if [ ! "$(norm_ans "$ans")" = 'Y' ]
then
   echo "Annulation"
   exit 1
fi

# Destination
if [ ! $# -eq 1 ]
then
  echo "Usage: $0 destination_file"
  echo "(- sort sur stdout)"
  echo "Exemple: $0 /tmp/mon-scodoc.tgz"
  exit 1
fi
DEST=$1
db_name="$SCODOC_DB_PROD" # SCODOC

# dump dans /opt/scodoc-data/SCODOC.dump
echo "sauvegarde de la base de données"
pg_dump --format=custom --file="$SCODOC_VAR_DIR/$db_name.dump" "$db_name" || die "Error dumping database"

echo "création du fichier d'archivage..."
# tar scodoc-data vers le fichier indiqué ou stdout
(cd $(dirname "$SCODOC_VAR_DIR"); tar cfz "$DEST" $(basename "$SCODOC_VAR_DIR")) || die "Error archiving data"

