From e7154a71f0906ccaffb6f46a02a05947e35e8a90 Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Wed, 14 Mar 2018 12:26:23 +0100 Subject: [PATCH] TT#14662 introduce phonebook tables * reseller - reseller_phonebook * contract - contract_phonebook * subscriber - subscriber_phonebook Change-Id: Ie9d6e63a688a5edb8481896720ac374cd2a7ebfb --- db_scripts/diff/15392.down | 8 +++++ db_scripts/diff/15392.up | 71 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 db_scripts/diff/15392.down create mode 100644 db_scripts/diff/15392.up diff --git a/db_scripts/diff/15392.down b/db_scripts/diff/15392.down new file mode 100644 index 00000000..96b4912d --- /dev/null +++ b/db_scripts/diff/15392.down @@ -0,0 +1,8 @@ +USE billing; + +DROP TRIGGER phonebook_on_reseller_update; +DROP TRIGGER phonebook_on_contract_update; +DROP TRIGGER phonebook_on_subscriber_update; +DROP TABLE reseller_phonebook; +DROP TABLE contract_phonebook; +DROP TABLE subscriber_phonebook; diff --git a/db_scripts/diff/15392.up b/db_scripts/diff/15392.up new file mode 100644 index 00000000..ce860aae --- /dev/null +++ b/db_scripts/diff/15392.up @@ -0,0 +1,71 @@ +USE billing; + +CREATE TABLE reseller_phonebook +( + id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, + reseller_id INT(11) UNSIGNED NOT NULL, + name VARCHAR(255) NOT NULL, + number VARCHAR(255) NOT NULL, + PRIMARY KEY (id), + UNIQUE KEY rel_u_idx (reseller_id, number), + KEY name_idx(name), + KEY number_idx(number), + CONSTRAINT pb_reseller_id_ref FOREIGN KEY (reseller_id) REFERENCES resellers (id) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE contract_phonebook +( + id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, + contract_id INT(11) UNSIGNED NOT NULL, + name VARCHAR(255) NOT NULL, + number VARCHAR(255) NOT NULL, + PRIMARY KEY (id), + UNIQUE KEY rel_u_idx (contract_id, number), + KEY name_idx(name), + KEY number_idx(number), + CONSTRAINT pb_contract_id_ref FOREIGN KEY (contract_id) REFERENCES contracts (id) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE subscriber_phonebook +( + id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, + subscriber_id INT(11) UNSIGNED NOT NULL, + name VARCHAR(255) NOT NULL, + number VARCHAR(255) NOT NULL, + shared TINYINT(1) NOT NULL DEFAULT '0', + PRIMARY KEY (id), + UNIQUE KEY rel_u_idx (subscriber_id, number), + KEY name_idx(name), + KEY number_idx(number), + CONSTRAINT pb_subscriber_id_ref FOREIGN KEY (subscriber_id) REFERENCES voip_subscribers (id) ON DELETE CASCADE ON UPDATE CASCADE +); + +DELIMITER // +CREATE TRIGGER phonebook_on_reseller_update AFTER UPDATE ON resellers +FOR EACH ROW +BEGIN + IF new.status = 'terminated' THEN + DELETE FROM phonebook WHERE reseller_id = old.id; + END IF; +END; // +DELIMITER ; + +DELIMITER // +CREATE TRIGGER phonebook_on_contract_update AFTER UPDATE ON contracts +FOR EACH ROW +BEGIN + IF new.status = 'terminated' THEN + DELETE FROM phonebook WHERE contract_id = old.id; + END IF; +END; // +DELIMITER ; + +DELIMITER // +CREATE TRIGGER phonebook_on_subscriber_update AFTER UPDATE ON voip_subscribers +FOR EACH ROW +BEGIN + IF new.status = 'terminated' THEN + DELETE FROM phonebook WHERE subscriber_id = old.id; + END IF; +END; // +DELIMITER ;