#!/bin/sh
. /var/packages/Calendar/scripts/common
#${SERVICETOOL} --install-configure-file --package ${PRIVATE_LOCATION}/etc/Calendar.sc

CALENDAR_PHP_INI="SYNO.SDS.PhotoStation.ini"
PHP_EXTENSION_DEFINE=" -d extension=pdo_sqlite.so"


insert_php_config()
{
	local SESSION_SAVE_PATH=/var/services/tmp/calendar
	local ORI_FILE="${PKG_CONF_DIR}/$CALENDAR_PHP_INI.orig"
	local INI_FILE="${PKG_CONF_DIR}/$CALENDAR_PHP_INI"
	local PHP_INT_SIZE=`/usr/local/bin/php74 -r "echo PHP_INT_SIZE;"`

	if [ ! -d ${SESSION_SAVE_PATH} ]; then
		/bin/mkdir -m 0700 ${SESSION_SAVE_PATH}
		/bin/chown Calendar:Calendar ${SESSION_SAVE_PATH}
	fi


	if (( "$PHP_INT_SIZE" > "4" )); then
		synosetkeyvalue $INI_FILE upload_max_filesize 32G
		synosetkeyvalue $INI_FILE post_max_size 32G
	fi
}

insert_php_config

${PKG_TOOL_DIR}/migrate_notification_setting.py

# create db

ret=`${PSQL} ${DBA} ${DBNAME} -qt -c "select count(*) from  information_schema.tables where table_schema='public';";`
echo "tables: $ret" >> /var/log/synocal.log 2>&1
if [ "$ret" -ne "0" ] && [ -f $synocal_db_dump ]; then
	echo "== kill db sessions ==" >> /var/log/synocal.log 2>&1
	/bin/killall synoscgi_SYNO.Cal.InviteMail_1_reply >> /var/log/synocal.log 2>&1
	${PSQL} ${DBA} -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname='calendar';" >> /var/log/synocal.log 2>&1
	echo "== drop db ==" >> /var/log/synocal.log 2>&1
	${PSQL} ${DBA} -c "DROP DATABASE calendar" >> /var/log/synocal.log 2>&1
	if [ "$?" -ne "0" ]; then
		echo "== failed to drop db ==" >> /var/log/synocal.log 2>&1
		exit 0;
	fi
	echo "== drop table space ==" >> /var/log/synocal.log 2>&1
	${PSQL} ${DBA} -c "DROP tablespace synocalendar_tmp;"
	echo "== rm tmp folder ==" >> /var/log/synocal.log 2>&1
	rm -rf ${synocal_tmp_path}
	echo "== initialize db schema ==" >> /var/log/synocal.log 2>&1
	${PKG_TOOL_DIR}/syno_initialize_db_schema.sh >> /var/log/synocal.log 2>&1
	echo "== restore db dump ==" >> /var/log/synocal.log 2>&1
	/bin/pg_restore ${DBA} -d ${DBNAME} --data-only --disable-triggers $synocal_db_dump >> /var/log/synocal.log 2>&1

	# the following move to start for hyperbackup restore
	#echo "== tuning timezone ==" >> /var/log/synocal.log 2>&1
	#${PKG_TOOL_DIR}/timezone-tunning.sh
	#echo "== tuning todo-collection-tunning.sh ==" >> /var/log/synocal.log 2>&1
	#${PKG_TOOL_DIR}/todo-collection-tunning.sh
	#echo "== reindex db ==" >> /var/log/synocal.log 2>&1
	#$PSQL ${DBA} -d ${DBNAME} -c "reindex database calendar;"
else
	echo "== rm tmp folder ==" >> /var/log/synocal.log 2>&1
	rm -rf ${synocal_tmp_path}
	echo "== rm db dump file ==" >> /var/log/synocal.log 2>&1
	rm -f ${synocal_db_dump}
	echo "== create db ==" >> /var/log/synocal.log 2>&1
	${PKG_TOOL_DIR}/create_db.sh >> /var/log/synocal.log 2>&1
	${PKG_TOOL_DIR}/synocalendar_tmp.sh create_tmp_dir
	/bin/touch $is_new_beginning_file
fi

# enable systemd unit (DSM7 only)

if [ -f "/usr/syno/bin/synosystemctl" ]; then
	/usr/syno/bin/synosystemctl enable pkg-synocalendar-protect-pgsql
fi

exit 0
