#!/bin/bash

# Johan : quick & dirty to fix

#
# Variables
#

date_jour=$(date +%Y-%m-%d)
ok=0
err=0

#
# Usage
#

usage(){
    echo ""
    echo "Usage : check_k8s_dump_sql -d BACKUP_DIRECTORY -l DB_LIST"
    echo ""
    echo "OPTIONS :"
    echo "   -h     Print help"
    echo "   -d     Backup directory that contains the dumps (default: $backup_directory)"
    echo "   -l     Databases to check exclusively (comma separated and must match the backup folder name)"
    echo ""
    echo "Required: the dump name must be like dump-DB_NAME-YYYY-MM-JJ_*.gz"
    echo ""
}


#
# Getopts
#

while getopts ":h:l:d:*" opt; do
    case $opt in
        l)
            db_list="$OPTARG"
            ;;
        d)
            backup_directory="$OPTARG"
            if [[ ! -d $backup_directory ]] ; then
                echo "UNKNOWN: The backup directory doens't exist ($backup_directory)"
                exit 3
            fi
            ;;
        h)
            usage
            exit 3
            ;;
        \?)
            usage
            exit 3
            ;;
         *)
            usage
            exit 3
            ;;
    esac
done

if [[ -z $db_list ]] || [[ -z $backup_directory ]] ; then
    echo "UNKNOWN: The options "-d" and "-l" are mandatory"
    exit 3
fi

#
# Au boulot
#
for db in $(echo $db_list | sed "s/,/ /g") ; do
    db_folder="$backup_directory/$db"

    if [[ ! -d $db_folder ]] ; then
        err=$((err+1))
        err_message="$err_message- $db (aucun dump)\n"
        continue
    fi

    if ( ! ls $db_folder/dump-$db-*"$date_jour"_*.gz &> /dev/null ) ; then
        err=$((err+1))
        if [ "$(ls -A $db_folder)" ]; then
            last_dump=$(ls $db_folder | tail -n 1 | rev | cut -d "_" -f 2 | awk -F"-" '{print $3"-"$2"-"$1}' | rev)
            err_message="$err_message- $db (last dump : $last_dump)\n"
        else
            err_message="$err_message- $db (aucun dump)\n"
        fi
    else
        ok_message="$ok_message- $db\n"
        ok=$((ok+1))
    fi
done

if [[ $err -eq 0 ]] ; then
    echo "OK: Toutes les bases ont ete dumpees aujourd'hui"
    echo -e $ok_message
    exit 0
else
    echo "WARNING: Une ou plusieurs bases n'ont pas ete dumpees aujourd'hui :"
    echo -e $err_message
    if [[ $ok -gt 0 ]] ; then
        echo "Liste des bases qui ont ete bien dumpees :"
        echo -e $ok_message
    fi
    exit 1
fi

