#!/bin/bash

# DB_TYPE : MYSQL|POSTGRES

# MYSQL				POSTGRESQL                        MONGODB
# MYSQL_SERVICE_NAME_LIST	POSTGRES_SERVICE_NAME_LIST        MONGO_SERVICE_NAME_LIST
# MYSQL_HOST_LIST		POSTGRES_HOST_LIST                MONGO_HOST_LIST
# MYSQL_PORT_LIST		POSTGRES_PORT_LIST                MONGO_PORT_LIST
# MYSQL_USER_LIST		POSTGRES_USER_LIST                MONGO_USER_LIST
# MYSQL_PASS_LIST		POSTGRES_PASS_LIST                MONGO_PASS_LIST
# MYSQL_DB_LIST			POSTGRES_DB_LIST                  MONGO_DB_LIST
# MYSQL_INIT_BACKUP_LIST	POSTGRES_INIT_BACKUP_LIST         MONGO_INIT_BACKUP_LIST
# MYSQL_CRON_TIME_LIST		POSTGRES_CRON_TIME_LIST           MONGO_CRON_TIME_LIST
# MYSQL_EXTRA_OPTS_LIST		POSTGRES_EXTRA_OPTS-LIST          MONGO_BACKUP_FOLDER_LIST 
# MYSQL_BACKUP_FOLDER_LIST	POSTGRESQL_BACKUP_FOLDER_LIST     

#####################
# Create the arrays #
#####################

IFS=,
#MYSQL
read -a MYSQL_HOST_ARRAY <<< "$MYSQL_HOST_LIST"
read -a MYSQL_SERVICE_NAME_ARRAY <<< "$MYSQL_SERVICE_NAME_LIST"
read -a MYSQL_PORT_ARRAY <<< "$MYSQL_PORT_LIST"
read -a MYSQL_USER_ARRAY <<< "$MYSQL_USER_LIST"
read -a MYSQL_PASS_ARRAY <<< "$MYSQL_PASS_LIST"
read -a MYSQL_DB_ARRAY <<< "$MYSQL_DB_LIST"
read -a MYSQL_INIT_BACKUP_ARRAY <<< "$MYSQL_INIT_BACKUP_LIST"
read -a MYSQL_CRON_TIME_ARRAY <<< "$MYSQL_CRON_TIME_LIST"
read -a MYSQL_EXTRA_OPTS_ARRAY <<< "$MYSQL_EXTRA_OPTS_LIST"
read -a MYSQL_BACKUP_FOLDER_ARRAY <<< "$MYSQL_BACKUP_FOLDER_LIST"

#POSTGRES
read -a POSTGRES_HOST_ARRAY <<< "$POSTGRES_HOST_LIST"
read -a POSTGRES_SERVICE_NAME_ARRAY <<< "$POSTGRES_SERVICE_NAME_LIST"
read -a POSTGRES_PORT_ARRAY <<< "$POSTGRES_PORT_LIST"
read -a POSTGRES_USER_ARRAY <<< "$POSTGRES_USER_LIST"
read -a POSTGRES_PASS_ARRAY <<< "$POSTGRES_PASS_LIST"
read -a POSTGRES_DB_ARRAY <<< "$POSTGRES_DB_LIST"
read -a POSTGRES_INIT_BACKUP_ARRAY <<< "$POSTGRES_INIT_BACKUP_LIST"
read -a POSTGRES_CRON_TIME_ARRAY <<< "$POSTGRES_CRON_TIME_LIST"
read -a POSTGRES_EXTRA_OPTS_ARRAY <<< "$POSTGRES_EXTRA_OPTS_LIST"
read -a POSTGRES_BACKUP_FOLDER_ARRAY <<< "$POSTGRES_BACKUP_FOLDER_LIST"

#MONGO
read -a MONGO_HOST_ARRAY <<< "$MONGO_HOST_LIST"
read -a MONGO_SERVICE_NAME_ARRAY <<< "$MONGO_SERVICE_NAME_LIST"
read -a MONGO_PORT_ARRAY <<< "$MONGO_PORT_LIST"
read -a MONGO_USER_ARRAY <<< "$MONGO_USER_LIST"
read -a MONGO_PASS_ARRAY <<< "$MONGO_PASS_LIST"
read -a MONGO_DB_ARRAY <<< "$MONGO_DB_LIST"
read -a MONGO_INIT_BACKUP_ARRAY <<< "$MONGO_INIT_BACKUP_LIST"
read -a MONGO_CRON_TIME_ARRAY <<< "$MONGO_CRON_TIME_LIST"
read -a MONGO_BACKUP_FOLDER_ARRAY <<< "$MONGO_BACKUP_FOLDER_LIST"

###########################
# Call the backup scripts #
###########################

# Define the scripts location

#Execute MySQL backups
NB_CALLS=${#MYSQL_HOST_ARRAY[@]}

for (( i=0; i < $NB_CALLS; i++ ))
do
	MYSQL_SERVICE_NAME=${MYSQL_SERVICE_NAME_ARRAY[i]} \
	MYSQL_HOST=${MYSQL_HOST_ARRAY[i]} \
	MYSQL_PORT=${MYSQL_PORT_ARRAY[i]} \
	MYSQL_USER=${MYSQL_USER_ARRAY[i]} \
	MYSQL_PASS=${MYSQL_PASS_ARRAY[i]} \
	MYSQL_DB=${MYSQL_DB_ARRAY[i]} \
	INIT_BACKUP=${MYSQL_INIT_BACKUP_ARRAY[i]} \
	CRON_TIME=${MYSQL_CRON_TIME_ARRAY[i]} \
	EXTRA_OPTS=${MYSQL_EXTRA_OPTS_ARRAY[i]} \
	BACKUP_FOLDER="/backup/${MYSQL_BACKUP_FOLDER_ARRAY[i]}/" \
	/scripts/mysql/mysql-run.sh
done

#Execute PostgreSQL backups
NB_CALLS=${#POSTGRES_HOST_ARRAY[@]}

for (( i=0; i < $NB_CALLS; i++ ))
do
	POSTGRES_SERVICE_NAME=${POSTGRES_SERVICE_NAME_ARRAY[i]} \
	POSTGRES_HOST=${POSTGRES_HOST_ARRAY[i]} \
	POSTGRES_PORT=${POSTGRES_PORT_ARRAY[i]} \
	POSTGRES_USER=${POSTGRES_USER_ARRAY[i]} \
	POSTGRES_PASS=${POSTGRES_PASS_ARRAY[i]} \
	POSTGRES_DB=${POSTGRES_DB_ARRAY[i]} \
	INIT_BACKUP=${POSTGRES_INIT_BACKUP_ARRAY[i]} \
	CRON_TIME=${POSTGRES_CRON_TIME_ARRAY[i]} \
	EXTRA_OPTS=${POSTGRES_EXTRA_OPTS_ARRAY[i]} \
	BACKUP_FOLDER="/backup/${POSTGRES_BACKUP_FOLDER_ARRAY[i]}/" \
	/scripts/postgresql/postgres-run.sh
done

#Execute MongoDB backups
NB_CALLS=${#MONGO_HOST_ARRAY[@]}

for (( i=0; i < $NB_CALLS; i++ ))
do
        MONGO_SERVICE_NAME=${MONGO_SERVICE_NAME_ARRAY[i]} \
        MONGO_HOST=${MONGO_HOST_ARRAY[i]} \
        MONGO_PORT=${MONGO_PORT_ARRAY[i]} \
        MONGO_USER=${MONGO_USER_ARRAY[i]} \
        MONGO_PASS=${MONGO_PASS_ARRAY[i]} \
        MONGO_DB=${MONGO_DB_ARRAY[i]} \
        INIT_BACKUP=${MONGO_INIT_BACKUP_ARRAY[i]} \
        CRON_TIME=${MONGO_CRON_TIME_ARRAY[i]} \
        BACKUP_FOLDER="/backup/${MONGO_BACKUP_FOLDER_ARRAY[i]}/" \
        /scripts/mongodb/mongo-run.sh
done

exec cron -f