#!/bin/bash
set -e

echo "Dump database to /tmp/sysal.dump"
mysqldump --default-character-set=utf8 sysal -usysal -psysal >/tmp/sysal.dump

# alle FKs müssen entfernt werden, da sich sonst die neuen nicht einspielen lassen
# (Namenskonflikt)
echo "Rename tables (main DB + Watchdog)"
mysql -usysal -psysal sysal <<END

ALTER TABLE alm_man_obj DROP FOREIGN KEY alm_man_obj_FK_1;
ALTER TABLE cur_alm_cond DROP FOREIGN KEY cur_alm_cond_FK_1;
ALTER TABLE cur_alm_cond DROP FOREIGN KEY cur_alm_cond_FK_2;
ALTER TABLE asgt_evt_sel DROP FOREIGN KEY asgt_evt_sel_FK_1;
ALTER TABLE asgt_evt_sel DROP FOREIGN KEY asgt_evt_sel_FK_2;
ALTER TABLE thr_asev_asgt_rule DROP FOREIGN KEY thr_asev_asgt_rule_FK_1;
ALTER TABLE bal_evt_sel DROP FOREIGN KEY bal_evt_sel_FK_1;
ALTER TABLE bal_evt_sel DROP FOREIGN KEY bal_evt_sel_FK_2;
ALTER TABLE esc_host_sel DROP FOREIGN KEY esc_host_sel_FK_1;
ALTER TABLE esc_host_sel DROP FOREIGN KEY esc_host_sel_FK_2;
ALTER TABLE forw_evt_sel DROP FOREIGN KEY forw_evt_sel_FK_1;
ALTER TABLE forw_evt_sel DROP FOREIGN KEY forw_evt_sel_FK_2;
ALTER TABLE dest_host_sel DROP FOREIGN KEY dest_host_sel_FK_1;
ALTER TABLE dest_host_sel DROP FOREIGN KEY dest_host_sel_FK_2;

RENAME TABLE 
	alm_mgmt_host			TO alm_mgmt_host_old,
	alm_evt_dscr			TO alm_evt_dscr_old,
	alm_man_obj				TO alm_man_obj_old,
	cur_alm_cond			TO cur_alm_cond_old,
	asev_asgt_rule			TO asev_asgt_rule_old,
	asgt_evt_sel			TO asgt_evt_sel_old,
	thr_asev_asgt_rule	TO thr_asev_asgt_rule_old,
	alm_bal_mon				TO alm_bal_mon_old,
	bal_evt_sel				TO bal_evt_sel_old,
	esc_host_sel			TO esc_host_sel_old,
	alm_forw_inst			TO alm_forw_inst_old,
	forw_evt_sel			TO forw_evt_sel_old,
	dest_host_sel			TO dest_host_sel_old,
	rem_wdog					TO rem_wdog_old,
	ping_wdog				TO ping_wdog_old;
END

echo "Install new schema"
mysql -usysal -psysal sysal </usr/share/php/SysAl/AlarmManagement/etc/schema.sql
mysql -usysal -psysal sysal </usr/share/php/SysAl/AlarmInterface/etc/schema.sql
mysql -usysal -psysal sysal <<END1
	UPDATE version SET db_version=3;
END1

echo "Upgrade data"
mysql -usysal -psysal sysal <<'END2'
START TRANSACTION;
INSERT INTO alm_mgmt_host SELECT * FROM alm_mgmt_host_old;
INSERT INTO alm_evt_dscr SELECT * FROM alm_evt_dscr_old;
INSERT INTO alm_man_obj SELECT * FROM alm_man_obj_old;
INSERT INTO cur_alm_cond SELECT * FROM cur_alm_cond_old;
INSERT INTO asev_asgt_rule SELECT * FROM asev_asgt_rule_old;
INSERT INTO asgt_evt_sel SELECT * FROM asgt_evt_sel_old;
INSERT INTO thr_asev_asgt_rule SELECT * FROM thr_asev_asgt_rule_old;
INSERT INTO alm_bal_mon SELECT * FROM alm_bal_mon_old;
INSERT INTO bal_evt_sel SELECT * FROM bal_evt_sel_old;
INSERT INTO esc_host_sel SELECT * FROM esc_host_sel_old;
INSERT INTO alm_forw_inst SELECT * FROM alm_forw_inst_old;
INSERT INTO forw_evt_sel SELECT * FROM forw_evt_sel_old;
INSERT INTO dest_host_sel SELECT * FROM dest_host_sel_old;
INSERT INTO rem_wdog SELECT
	id, `mod`, name, inst_addr_sel, inst_addr_val, evt_spec_sel, evt_spec_val, min_int, last_ping, has_alarm, 0
	FROM rem_wdog_old;
INSERT INTO ping_wdog SELECT
	id, `mod`, name, inst_addr_sel, inst_addr_val, evt_spec_sel, evt_spec_val, has_alarm, 0
	FROM ping_wdog_old;

DROP TABLE alm_mgmt_host_old;
DROP TABLE alm_evt_dscr_old;
DROP TABLE alm_man_obj_old;
DROP TABLE cur_alm_cond_old;
DROP TABLE asev_asgt_rule_old;
DROP TABLE asgt_evt_sel_old;
DROP TABLE thr_asev_asgt_rule_old;
DROP TABLE alm_bal_mon_old;
DROP TABLE bal_evt_sel_old;
DROP TABLE esc_host_sel_old;
DROP TABLE alm_forw_inst_old;
DROP TABLE forw_evt_sel_old;
DROP TABLE dest_host_sel_old;
DROP TABLE rem_wdog_old;
DROP TABLE ping_wdog_old;

COMMIT;
END2

