#!/bin/bash

set -e

# Usage: copy.rechlauf Nummer
# holt sofort nach dem aktuellen Rechnungslauf die Daten aus der DB
# Start via "rldumper"-TCP-Job
# Wartet, solange der RL noch nicht verfügbar ist!

x="$1"
if test -z "$x" ; then
	echo BAD
	echo >&2 "Usage: $0 RL-Nummer"
	exit 1
fi

POPHOME=${POPHOME:-@POPHOME@}
. $POPHOME/lib/pop_conf_sh

DATAHOST_ECHT=${DATAHOST_ECHT:-$DATAHOST}
DATAUSER_ECHT=${DATAUSER_ECHT:-$DATAUSER}
DATAPASS_ECHT=${DATAPASS_ECHT:-$DATAPASS}
DBDATABASE_ECHT=${DBDATABASE_ECHT:-$DBDATABASE}

DATAHOST_QSU=${DATAHOST_QSU:-$DATAHOST}
DATAUSER_QSU=${DATAUSER_QSU:-$DATAUSER}
DATAPASS_QSU=${DATAPASS_QSU:-$DATAPASS}
DBDATABASE_QSU=${DBDATABASE_QSU:-$DBDATABASE}

LOCK="/var/lock/kunde/copy_rechlauf"
shlock $LOCK || exit 0
trap 'rm -f $LOCK' 0 1 2 15
RLC=$QSU_TMP/rlc.$$

RL=$(mysql -h$DATAHOST_QSU -u$DATAUSER_QSU -p$DATAPASS_QSU -s \
	-e"show databases" | sed -ne 's/^pop_rl_//p' | sort -rn | head -1)

if [ $RL -ge $x ] ; then
	echo ERROR Diesen Rechnungslauf gibt es schon
	echo BAD
	exit 1
fi

n=0
while : ; do
	RLE=$(mysql -h$DATAHOST_ECHT -u$DATAUSER_ECHT -p$DATAPASS_ECHT -s \
		-e"select count(*) from rechlauf where id=$x" $DBDATABASE_ECHT)

	if [ $RLE = 1 ] ; then break; fi
	echo "Rechnungslauf $x: ist noch nicht auf $DATAHOST_ECHT"
	n=$(( $n + 1 ))
	sleep 10
done

echo "Rechnungslauf $x: Datenbankkopie wird erstellt ($n)"

# fliegt auch auf die Nase wenn eines der beiden nicht erfolgreich ist

TABELLEN="$(mysql -h$DATAHOST_ECHT -u$DATAUSER_ECHT -p$DATAPASS_ECHT -s -e"show tables" $DBDATABASE_ECHT | egrep -xv 'startlog|updatelog|ticketid|exim_cache_1|exim_cache_2')"
(
	echo "create database ${DBDATABASE_QSU}_rl_$x;"
	echo "use ${DBDATABASE_QSU}_rl_$x;"
	mysqldump -q --single-transaction -h$DATAHOST_ECHT -u$DATAUSER_ECHT -p$DATAPASS_ECHT $DBDATABASE_ECHT $TABELLEN
	mysqldump -q --single-transaction --no-data -h$DATAHOST_ECHT -u$DATAUSER_ECHT -p$DATAPASS_ECHT $DBDATABASE_ECHT startlog updatelog ticketid
	echo "use $DBDATABASE;"
	echo "update nextid set id=$x where name='rechnungslauf';"
) > $RLC
(
	mysql -h$DATAHOST_QSU -u$DATAUSER_QSU -p$DATAPASS_QSU < $RLC
	rm -f $RLC
) </dev/null >/dev/null 2>&1 &

echo "Datenbankkopie von Rechnungslauf $x erstellt."
echo "(Das Einspielen erfolgt im Hintergrund.)"
exit 0
