#!/bin/sh

file_dir=/var/www/public/uploads

restore_db_file=${file_dir}/pdu_default.db

#restore to default 
if [ -e ${restore_db_file} ]; then
	echo "Found default db file ..."
	echo "Now restoring default db file..."
	
	db_version=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "pragma user_version;")
	
	uid=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='hard_id';")
	echo "uid before restoring default:${uid}"

	mac=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='mac';")
	echo "mac before restoring default:${mac}"
	
	language=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='language';")
	echo "language before restoring default:${language}"

	cp -a ${restore_db_file} /var/www/database/pdu.db
	
	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "pragma user_version="${db_version};

	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='${uid}' where name='hard_id';"
	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='${mac}' where name='mac';"	
	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='${language}' where name='language';"

	uid=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='hard_id';")
	echo "uid after restoring default:${uid}"                                                              
                                                                                                                
	mac=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='mac';")
	echo "mac after restoring default:${mac}" 

	language=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='language';")
	echo "language after restoring default:${language}"

	rm -f ${restore_db_file}
	echo "Restoring done"
else
	echo "No restore db file, skipping restoring..."
fi

db_version=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "pragma user_version;")

echo "db version before upgrade database:"${db_version}

cur_version=13

#upgrade database

i=${db_version}

if [ $i -lt ${cur_version} ]; then
	while [ $i -lt ${cur_version} ]
	do
    		if [ $i -eq 1 ]; then
			/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.3' where name='soft_version';"

        		echo "db version 1"
    
    		elif [ $i -eq 2 ]; then	
        		/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.4' where name='soft_version';"

        		echo "db version 2"

			elif [ $i -eq 3 ]; then 
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.5' where name='soft_version';"
				
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "drop table if exists alarm_records;"

				echo "db version 3"

			elif [ $i -eq 4 ]; then 
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.6' where name='soft_version';"     
				
				echo "db version 4"

			elif [ $i -eq 5 ]; then 
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.6.1' where name='soft_version';"     
     
				echo "db version 5"

			elif [ $i -eq 6 ]; then
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.6.2' where name='soft_version';"
				
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "insert into settings values('netbios_name','ippdu');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "insert into settings values('http_port','80');"  

				echo "db version 6"

			elif [ $i -eq 7 ]; then
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='v1.6.3' where name='soft_version';"
				
				echo "db version 7"

			elif [ $i -eq 8 ]; then
				/usr/init_script/upgrade_db_pdu_v8_to_v9.sh

				echo "db version 8"

            elif [ $i -eq 9 ]; then
				chmod +x /usr/init_script/upgrade_pdu_v9_to_v10.sh
				/usr/init_script/upgrade_pdu_v9_to_v10.sh

				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "insert into settings values('screen_dir','1');"
               	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "insert into settings values('https_port','443');"
               	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "insert into settings values('enable_redirect','0');"
               	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='20231116' where name='soft_version';"

				echo "db version 9"

			elif [ $i -eq 10 ]; then
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('change_admin_pwd','0');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('snmp_v3_user','admin');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('snmp_v3_auth_pwd','11111111');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('snmp_v3_priv_pwd','22222222');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('ntp_server_ip','ntp.org.cn');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('second_ntp_server_ip','time.windows.com');"
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "replace into settings values('backlight_auto_off','1');"

				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='20241009' where name='soft_version';"
			
				echo "db version 10"

			elif [ $i -eq 11 ]; then
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='20250108' where name='soft_version';"

				echo "db version 11"

			elif [ $i -eq 12 ]; then
				/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='20250623' where name='soft_version';"

				echo "db version 12"
			fi 

    		let i++;
	done

	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "pragma user_version="${cur_version};
fi

db_version=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "pragma user_version;")

echo "db version after upgrade database:"${db_version}

db_energy_version=$(/usr/local/sqlite/sqlite3 /var/www/database/energy.db "pragma user_version;")

echo "db energy version before upgrade database:"${db_energy_version}

cur_db_energy_version=1

#upgrade energy database

i=${db_energy_version}

if [ $i -lt ${cur_db_energy_version} ]; then
	while [ $i -lt ${cur_db_energy_version} ]
	do
    	if [ $i -eq 0 ]; then
			/usr/init_script/upgrade_v0_to_v1.sh

        	echo "db energy version 0"
    
		fi 

    	let i++;
	done

	/usr/local/sqlite/sqlite3 /var/www/database/energy.db "pragma user_version="${cur_db_energy_version};
fi

db_energy_version=$(/usr/local/sqlite/sqlite3 /var/www/database/energy.db "pragma user_version;")

echo "db energy version after upgrade database:"${db_energy_version}

