#!/bin/sh

DATE=`date +"%y%m%d_%H%M%S"`
DIR=/home/postgres
OPT=$1

selectfile()
{
	cd /home/postgres/
	if [ `ls -1 $OPT.* | wc -l` == 0 ];then
		exit
	fi
	echo "-----backup-files-----"
	#ls -1 $OPT.* | sed -e "s/"$OPT".//g" | sed -e "s/.csv//g"

	num=0
	for list in `ls -1 $OPT*.csv 2>/dev/null`;
	do
		files[$num]=${list}
		printf ${num}
		echo . ${list}
		num=`expr ${num} + 1`
	done
	echo

	if [ ${num} = 0 ];then
		echo "*.csv: No such file or directory"
		echo
		exit
	fi

	# Select file(type date)
	echo "Please type number."
	read ans
	echo

	# File-NotFound
	if [ ! -f /home/postgres/${files[${ans}]} ];
	then
		echo "not found" : ${files[${ans}]}
		exit;
	fi
}

# OPTION is 'ALL write'
#   write latest
selectALL()
{
	cd /home/postgres/
	if [ ! `ls -t -1 | grep -e "sync_gip.*\.csv" | wc -l` = 0 ];then
		s_gip=`ls -t -1 sync_gip*.csv | head -n 1`
	fi
	if [ ! `ls -t -1 | grep -e "sync_mng.*\.csv" | wc -l` = 0 ];then
		s_mng=`ls -t -1 sync_mng*.csv | head -n 1`
	fi
	if [ ! `ls -t -1 | grep -e "sync_rip.*\.csv" | wc -l` = 0 ];then
		s_rip=`ls -t -1 sync_rip*.csv | head -n 1`
	fi
	if [ ! `ls -t -1 | grep -e "unsync_gip.*\.csv" | wc -l` = 0 ];then
		us_gip=`ls -t -1 unsync_gip*.csv | head -n 1`
	fi
	if [ ! `ls -t -1 | grep -e "unsync_mng.*\.csv" | wc -l` = 0 ];then
		us_mng=`ls -t -1 unsync_mng*.csv | head -n 1`
	fi
	if [ ! `ls -t -1 | grep -e "unsync_multicast_mng.*\.csv" | wc -l` = 0 ];then
		us_multi=`ls -t -1 unsync_multicast_mng*.csv | head -n 1`
	fi
	if [ ! `ls -t -1 | grep -e "unsync_user_mng.*\.csv" | wc -l` = 0 ];then
		us_user=`ls -t -1 unsync_user_mng*.csv | head -n 1`
	fi
}


case $2 in


	##### Read #####
	read)
	case $1 in
		sync_gip)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY sync_gip TO '$DIR/sync_gip.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		sync_mng)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY sync_mng TO '$DIR/sync_mng.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		sync_rip)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY sync_rip TO '$DIR/sync_rip.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_gip)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY unsync_gip TO '$DIR/unsync_gip.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_mng)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY unsync_mng TO '$DIR/unsync_mng.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_multicast_mng)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY unsync_multicast_mng TO '$DIR/unsync_multicast_mng.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_user_mng)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY unsync_user_mng TO '$DIR/unsync_user_mng.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		ALL)
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				COPY sync_gip TO '$DIR/sync_gip.$DATE.csv' DELIMITER ',';
				COPY sync_mng TO '$DIR/sync_mng.$DATE.csv' DELIMITER ',';
				COPY sync_rip TO '$DIR/sync_rip.$DATE.csv' DELIMITER ',';
				COPY unsync_gip TO '$DIR/unsync_gip.$DATE.csv' DELIMITER ',';
				COPY unsync_mng TO '$DIR/unsync_mng.$DATE.csv' DELIMITER ',';
				COPY unsync_multicast_mng TO '$DIR/unsync_multicast_mng.$DATE.csv' DELIMITER ',';
				COPY unsync_user_mng TO '$DIR/unsync_user_mng.$DATE.csv' DELIMITER ',';
				\q
				EOS
			"
			;;

		*)
			echo "Usage dstar_db-backup { ALL | sync_gip | sync_mng | sync_rip | unsync_gip | unsync_mng | unsync_multicast_mng | unsync_user_mng } { read | write }";;
	esac
	;;
	##### Read ######


	##### Write ######
	write)	case $1 in
		sync_gip)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE sync_gip;
				VACUUM sync_gip;
				COPY sync_gip FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		sync_mng)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE sync_mng;
				VACUUM sync_mng;
				COPY sync_mng FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		sync_rip)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE sync_rip;
				VACUUM sync_rip;
				COPY sync_rip FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_gip)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE unsync_gip;
				VACUUM unsync_gip;
				COPY unsync_gip FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_mng)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE unsync_mng;
				VACUUM unsync_mng;
				COPY unsync_mng FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_multicast_mng)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE unsync_multicast_mng;
				VACUUM unsync_multicast_mng;
				COPY unsync_multicast_mng FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		unsync_user_mng)
			selectfile
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				TRUNCATE unsync_user_mng;
				VACUUM unsync_user_mng;
				COPY unsync_user_mng FROM '$DIR/${files[${ans}]}' DELIMITER ',';
				\q
				EOS
			"
			;;
	
		ALL)
			selectALL
			if [ ! $s_gip = "" ];then
				sql=${sql}"TRUNCATE sync_gip;VACUUM sync_gip;COPY sync_gip FROM '$DIR/$s_gip' DELIMITER ',';"
			fi
			if [ ! $s_mng = "" ];then
				sql=${sql}"TRUNCATE sync_mng;VACUUM sync_mng;COPY sync_mng FROM '$DIR/$s_mng' DELIMITER ',';"
			fi
			if [ ! $s_rip = "" ];then
				sql=${sql}"TRUNCATE sync_rip;VACUUM sync_rip;COPY sync_rip FROM '$DIR/$s_rip' DELIMITER ',';"
			fi
			if [ ! $us_gip = "" ];then
				sql=${sql}"TRUNCATE unsync_gip;VACUUM unsync_gip;COPY unsync_gip FROM '$DIR/$us_gip' DELIMITER ',';"
			fi
			if [ ! $us_mng = "" ];then
				sql=${sql}"TRUNCATE unsync_mng;VACUUM unsync_mng;COPY unsync_mng FROM '$DIR/$us_mng' DELIMITER ',';"
			fi
			if [ ! $us_multi = "" ];then
				sql=${sql}"TRUNCATE unsync_multicast_mng;VACUUM unsync_multicast_mng;COPY unsync_multicast_mng FROM '$DIR/$us_multi' DELIMITER ',';"
			fi
			if [ ! $us_user = "" ];then
				sql=${sql}"TRUNCATE unsync_user_mng;VACUUM unsync_user_mng;COPY unsync_user_mng FROM '$DIR/$us_user' DELIMITER ',';"
			fi
			su - postgres -c "
				cat << EOS | psql -U dstar dstar_global
				$sql
				\q
				EOS
			"
			;;

		*)
			echo "Usage dstar_db-backup { ALL | sync_gip | sync_mng | sync_rip | unsync_gip | unsync_mng | unsync_multicast_mng | unsync_user_mng } { read | write }";;
	esac
	;;
	##### Write #####


	*)
		echo "Usage dstar_db-backup { ALL | sync_gip | sync_mng | sync_rip | unsync_gip | unsync_mng | unsync_multicast_mng | unsync_user_mng } { read | write }"
		exit;;
esac

echo "*** finished ***"
