You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
db-schema/db_scripts/diff/15742.up

64 lines
2.4 KiB

USE provisioning;
SET autocommit=0;
CREATE TABLE `voip_contract_speed_dial` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`contract_id` int(11) unsigned NOT NULL,
`slot` varchar(64) NOT NULL,
`destination` varchar(192) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `contractid_slot_idx` (`contract_id`,`slot`),
CONSTRAINT `v_csd_contractid_ref` FOREIGN KEY (`contract_id`) REFERENCES `billing`.`contracts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);
DELIMITER ;;
CREATE TRIGGER voip_contract_sd_crepl_trig AFTER INSERT ON voip_contract_speed_dial
FOR EACH ROW BEGIN
DECLARE sd_domain varchar(64);
DECLARE target_domain varchar(64);
DECLARE at_end_pos smallint;
SET target_domain = 'local.sd.customer.domain';
SET at_end_pos = LOCATE('@', NEW.destination);
SET sd_domain = SUBSTR(NEW.destination FROM at_end_pos+1);
INSERT INTO kamailio.speed_dial (username, domain, sd_username, sd_domain,
new_uri, fname, lname, description)
VALUES(NEW.contract_id, target_domain,
NEW.slot, sd_domain,
NEW.destination, '', '', '');
END ;;
DELIMITER ;
DELIMITER ;;
CREATE TRIGGER voip_contract_sd_urepl_trig AFTER UPDATE ON voip_contract_speed_dial
FOR EACH ROW BEGIN
DECLARE sd_domain varchar(64);
DECLARE target_domain varchar(64);
DECLARE at_end_pos smallint;
SET target_domain = 'local.sd.customer.domain';
SET at_end_pos = LOCATE('@', NEW.destination);
SET sd_domain = SUBSTR(NEW.destination FROM at_end_pos+1);
UPDATE kamailio.speed_dial SET username = NEW.contract_id, domain = target_domain,
sd_username = NEW.slot, sd_domain = sd_domain,
new_uri = NEW.destination
WHERE username <=> OLD.contract_id
AND domain <=> target_domain
AND sd_username <=> OLD.slot;
END ;;
DELIMITER ;
DELIMITER ;;
CREATE TRIGGER voip_contract_sd_drepl_trig BEFORE DELETE ON voip_contract_speed_dial
FOR EACH ROW BEGIN
DECLARE target_domain varchar(64);
SET target_domain = 'local.sd.customer.domain';
DELETE FROM kamailio.speed_dial WHERE username <=> OLD.contract_id
AND domain <=> target_domain
AND sd_username <=> OLD.slot;
END ;;
DELIMITER ;
COMMIT;