#!/bin/bash
[ "$1" == "" ] && exec echo "Usage: $0 <TABLE_NAME>"

source $HOME/.gamerc

SCRIPT_NAME=$(basename "$0")
LOCK_FILE="/home/n1admin/www/promotion_upload/.${SCRIPT_NAME}.lock"

exec 200>"${LOCK_FILE}"
flock -n 200 || {
        echo "${SCRIPT_NAME} is running. Exiting."
    exit 1
}

TABLE_NAME=$1

get_table_primay_key_orders () {
    TABLE_NAME=$1
    RETURN=$(psql -U postgres ${GAME_TYPE}Account -c "
           COPY (SELECT a.attnum  AS column_number FROM pg_index i
            JOIN pg_class t ON t.oid = i.indrelid
            JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(i.indkey)
            WHERE
            i.indisprimary AND t.relname = '${TABLE_NAME}' AND pg_catalog.pg_table_is_visible(t.oid)) TO STDOUT;")
    echo ${RETURN}
}

rm -rf /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff*; 

mkdir -p /home/n1admin/www/promotion_upload/itemmall_web/test/; cd /home/n1admin/www/promotion_upload/itemmall_web/test; echo "Dump ${TABLE_NAME} on TEST ..."; pg_dump -U postgres ${GAME_TYPE}Account -t ${TABLE_NAME} > ${TABLE_NAME}_testbackup_new_current.sql

ssh ACCOUNTDB "echo 'Dump ${TABLE_NAME} on LIVE ...'; pg_dump -U postgres ${GAME_TYPE}Account -t ${TABLE_NAME} > /tmp/${TABLE_NAME}_livebackup_old_current.sql"
mkdir -p /home/n1admin/www/promotion_upload/itemmall_web/live/; cd /home/n1admin/www/promotion_upload/itemmall_web/live; rsync -avz ACCOUNTDB:/tmp/${TABLE_NAME}_livebackup_old_current.sql . >/dev/null 2>&1

#rm -rf /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff*; 

cd /home/n1admin/www/promotion_upload/itemmall_web/test
pkey_check=$(get_table_primay_key_orders ${TABLE_NAME})
echo ${pkey_check}
pkey_search=""
for order in $pkey_check; do
    search_order=$((order + 1))
    pkey_search="${pkey_search} ${search_order}"
done
pkey_search="$(xargs <<< "$pkey_search")"
echo ${pkey_search}
for pkey in $(diff ${TABLE_NAME}_testbackup_new_current.sql ../live/${TABLE_NAME}_livebackup_old_current.sql | egrep -a -v 'Dump' | egrep -a '<|>' | awk -F"\t" -v col_ext="${pkey_search}" '{print $col_ext}' | sort -n | uniq); do 
    echo ${pkey} >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.pkey; 
    diff ${TABLE_NAME}_testbackup_new_current.sql ../live/${TABLE_NAME}_livebackup_old_current.sql | grep -E '^[<>]' | awk -F'\t' -v col_int="${pkey_search}" -v vals="$pkey" '
BEGIN {
  split(vals, arr)
  for (i in arr) seen[arr[i]] = 1
}
{
  if ($col_int in seen) print
}'
done > /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content
	
echo "====== Modify ======" >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.modify
echo "====== New ======" >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.new
echo "====== Delete ======" >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.delete

#if [ -f "/home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.pkey" ]; then
#    while IFS= read -r pkey; do
#        if egrep -a -q "$(printf "^< ${id}\t")" /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content; then
#    	    if egrep -a -q "$(printf "^> ${id}\t")" /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content; then
#    	        new_content=$(cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content | egrep -a "$(printf "^< ${id}\t")" | sed "s/^< //g")
#    	        old_content=$(cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content | egrep -a "$(printf "^> ${id}\t")" | sed "s/^> //g")
#    	        if [ "${new_content}" != "${old_content}" ]; then
#    		        echo ${id} >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.modify
#    	            egrep -a "$(printf "^< ${id}\t")|$(printf "^> ${id}\t")"  /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.modify
#    	        fi
#    	    else
#                    echo ${id} >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.new
#    	            egrep -a "$(printf "^< ${id}\t")" /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.new
#    	    fi
#    	elif egrep -a -q "$(printf "^> ${id}\t")" /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content; then
#            echo ${id} >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.delete
#    	    egrep -a "$(printf "^> ${id}\t")" /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.delete
#    	fi
#    done < "/home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.id"
#fi

#OUTPUT_FILE="/home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.output"
##[ -f "${OUTPUT_FILE}" ] && rm -rf ${OUTPUT_FILE}
#echo >> ${OUTPUT_FILE}
#cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.new >> ${OUTPUT_FILE}
#echo >> ${OUTPUT_FILE}
#cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.modify >> ${OUTPUT_FILE}
#echo >> ${OUTPUT_FILE}
#cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content.delete >> ${OUTPUT_FILE}
#
#cat ${OUTPUT_FILE}
