#!/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

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
for id in $(diff ${TABLE_NAME}_testbackup_new_current.sql ../live/${TABLE_NAME}_livebackup_old_current.sql | egrep -a -v 'Dump' | egrep -a '<|>' | awk -F" " '{print $2}' | sort -n | uniq); do 
    echo ${id} >> /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.id; 
    diff ${TABLE_NAME}_testbackup_new_current.sql ../live/${TABLE_NAME}_livebackup_old_current.sql| egrep -a "$(printf "^< ${id}\t")|$(printf "^> ${id}\t")"; 
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.id" ]; then
    while IFS= read -r id; 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
    	            #cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content | egrep -a "$(printf "^< ${id}\t")|$(printf "^> ${id}\t")" >> /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
    	            #cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content | egrep -a "$(printf "^< ${id}\t")" >> /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
    	    #cat /home/n1admin/www/promotion_upload/itemmall_web/${TABLE_NAME}.diff.content | egrep -a "$(printf "^> ${id}\t")" >> /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}
