#!/bin/bash
CFGFILE=/etc/opt/sshbuk/sshbuk.vars
#CFGFILE=/root/sshbuk/sshbuk.vars
#CFGFILE=$HOME/sshbuk/sshbuk.vars
DBLOCALUSER=bukts
DBLOCALNAME=ubuk

show_help() {
    echo
    #echo "-------------------------------------------------------------"
    #echo "-------------------------------------------------------------"
};

if [ -f $CFGFILE ]; then
    . $CFGFILE
    export PATH=$PATH:$BINDIR
else
    echo "Не найден файл \"$CFGFILE\"" >& 2
    exit 1
fi

if [ -f $BINDIR/sshbuk.fn ]; then
    . $BINDIR/sshbuk.fn
else
    echo "Не найден файл \"sshbuk.fn\"" >& 2
    exit 1
fi

fn_make_log $LOGDIR
fn_to_log ""
fn_to_log "$(date +%H:%M:%S) $(basename $0) \"$@\""

## анализ командной строки
fn_command_line "$@"
AZS=$cml_azs
IFILE=$cml_ifile
DELSHIFT=
if [ ! -z "$cml_user" ];      then DBLOCALUSER=$cml_user;  fi
if [ ! -z "$cml_db" ];        then DBLOCALNAME=$cml_db;    fi
if [ ! -z "$cml_list_file" ]; then AZSLIST=$cml_list_file; fi
if [ ! -z "$cml_delshift" ];  then DELSHIFT="-delshift";   fi

if [ \( -z "$AZS" -a -z "$DBLOCALNAME" \) -o -z "$IFILE" ]; then
    MSG="Ошибка в командной строке"
    echo $MSG
    fn_to_log "$(date +%H:%M:%S) $MSG"
    show_help
    exit 1
fi

if [ ! -z "$DBLOCALNAME" ]; then
    DB=$DBLOCALNAME
else
    fn_get_azs_localdb $AZSLIST $AZS
    DB=$azs_localdb
fi

if [ -z "$DB" ]; then
    MSG="Неизвестно имя БД"
    echo $MSG >& 2
    fn_to_log "$(date +%H:%M:%S) $MSG"
    exit 1
fi

LDF_LOG=$LOGDIR/tmp.$(basename $IFILE).$(date "+%y%m%d%H%M%S").log
if [ -f $LDF_LOG ]; then
    rm $LDF_LOG
fi

fn_to_log "$(date +%H:%M:%S) Загрузка файла $IFILE в БД $DB"
$BINDIR/bukdb_ldf $DELSHIFT -db $DB -user $DBLOCALUSER -f $IFILE >> $LDF_LOG 2>>$LDF_LOG
ERR=$?
fn_file_to_log $LDF_LOG
fn_to_log "$(date +%H:%M:%S) result=$ERR"
if [ $ERR -ne 0 ]; then
    MSG="psql result = $ERR"
    echo $MSG >& 2
    fn_to_log "$(date +%H:%M:%S) $MSG"
    exit 1
fi

if [ ! -z "$(cat $LDF_LOG | grep ERROR)" ]; then
    rm $LDF_LOG
    MSG="Есть ошибки при загрузке данных в базу $DB"
    echo $MSG >& 2
    fn_to_log "$(date +%H:%M:%S) $MSG"
    exit 1
fi

rm $LDF_LOG
mv $IFILE $TRASHDIR
fn_to_log "$(date +%H:%M:%S) ok"
exit 0
