#!/bin/bash
### значения по умолчанию (переопределяются в cmdline)
SED=
DBNAME=ubuk
DBUSER=bukts
LOGDIR=/var/opt/bukdbase/log
if [ ! -d $LOGDIR ]; then
    LOGDIR=$HOME
fi

### сохраняемые таблицы справочников
TABLES_SD="sd_group_user sd_ident sd_local_conf_type sd_operation_type \
 sd_payments sd_rule_type sd_tazscards sd_conf_local sd_user_list sd_group_rule \
 sd_payprices"
TABLES_PD="pd_products pd_prodprices pd_loyalty pd_tanks_list"
TABLES_GD="gd_tax gd_group_list gd_list gd_actions_adm gd_actions \
 gd_identification gd_manager gd_store gd_supplier gd_actions_adm_m \
 gd_actions_save_m gd_actions_save_d"
TABLES_GD2="gd_count"

TBLLIST_DEF="sd pd gd"

## сформировать имя log-файла из имени программы
LOG=$LOGDIR/$(basename $0).$(date +%y%m%d).log
echo >> $LOG
echo "$(date +%H:%M:%S) start $@" >> $LOG

### обработать командную строку
i=$#;  # число параметров в командной строке
while [ $i -ge "0" ]; do
    is="no"
    case $1 in
    -db) # имя БД
        is="yes"; DBNAME=$2 ;;
    -user|-U) # пользователь БД
        is="yes"; DBUSER=$2 ;;
    -shop)
        is="yes"; IDSHOP=$2 ;;
    -op)
        is="yes"; O_PATH=$2 ;;
    -sed)
        is="yes"; SED=$2 ;;
    -tbl)
        is="yes";     
        if [ "$2" == "all" ]; then
            TBLLIST=$TBLLIST_DEF
        else
            TBLLIST="$TBLLIST $2"
        fi
        ;;
    esac
    if [ $is == "yes" ]; then
        shift
        i=`expr $i - 1`
    fi
    shift
    i=`expr $i - 1`
done

if [ -z "$SED" ]; then
    SED=sed
fi

if [ -z "$TBLLIST" ]; then
    TBLLIST=$TBLLIST_DEF
fi
echo "  TBLLIST=$TBLLIST" >> $LOG

### получить номер магазина (IDSHOP)
if [ -z "$IDSHOP" ]; then
    SQL="select id from sd_ident where id_shop_type=0 order by id desc limit 1"
    IDSHOP=$(psql $DBNAME -U $DBUSER -Atq -c "$SQL")
    if [ -z "$IDSHOP" ]; then
        MSG="Ошибка при определении номера магазина"
        echo $MSG >& 2
        echo "$(date +%H:%M:%S) $MSG" >> $LOG
        exit 1
    fi
fi

rm -f $O_PATH/*d*.$IDSHOP.*.sql 2>/dev/null
OFILE0=$O_PATH/d.$IDSHOP

# перейти в $O_PATH, чтобы TMPFILE создавался в нем (для возможной закачки)
FILELIST=
pushd $O_PATH > /dev/null
for ttyp in $(echo $TBLLIST); do
    case $ttyp in
    "sd") TABLES=$TABLES_SD ;;
    "pd") TABLES=$TABLES_PD ;;
    "gd") TABLES=$TABLES_GD ;;
    "gd2") TABLES=$TABLES_GD2 ;;
    *) continue ;;
    esac
    for i in $(echo $TABLES); do
        TMPFILE=$OFILE0.$i.sql
        if [ -f $TMPFILE ]; then
            rm $TMPFILE;
        fi
        pg_dump $DBNAME -U $DBUSER --inserts -a -t $i >> $TMPFILE
        FILELIST=$FILELIST" $(basename $TMPFILE)"
    done
done
popd > /dev/null

echo "$(date +%H:%M:%S) end" >> $LOG
echo $FILELIST
exit 0

