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 ;