mirror of https://github.com/sipwise/db-schema.git
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.
124 lines
5.4 KiB
124 lines
5.4 KiB
-- NOTE -- This will delete everything from kamailio.dialplan!
|
|
-- NOTE -- A backup is made to migration tables, run 5824.up immediately to restore it!
|
|
|
|
use provisioning;
|
|
|
|
CREATE TABLE `voip_rewrite_rule_sets` (
|
|
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
|
`name` varchar(32) NOT NULL,
|
|
`description` varchar(255) DEFAULT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `name_idx` (`name`)
|
|
) ENGINE=InnoDB;
|
|
|
|
CREATE TABLE `voip_rewrite_rules` (
|
|
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
|
`set_id` int(11) unsigned NOT NULL,
|
|
`match_pattern` varchar(64) NOT NULL DEFAULT '',
|
|
`replace_pattern` varchar(64) NOT NULL,
|
|
`description` varchar(127) NOT NULL DEFAULT '',
|
|
`direction` enum('in','out') NOT NULL DEFAULT 'in',
|
|
`field` enum('caller','callee') NOT NULL DEFAULT 'caller',
|
|
`priority` int(11) unsigned NOT NULL DEFAULT '50',
|
|
PRIMARY KEY (`id`),
|
|
KEY `setidx` (`set_id`),
|
|
KEY `dirfieldidx` (`direction`,`field`),
|
|
CONSTRAINT `v_rwr_setid_ref` FOREIGN KEY (`set_id`) REFERENCES `voip_rewrite_rule_sets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB;
|
|
|
|
DROP TRIGGER voip_domrw_crepl_trig;
|
|
DROP TRIGGER voip_domrw_urepl_trig;
|
|
DROP TRIGGER voip_domrw_drepl_trig;
|
|
DROP TRIGGER voip_peerrw_crepl_trig;
|
|
DROP TRIGGER voip_peerrw_urepl_trig;
|
|
DROP TRIGGER voip_peerrw_drepl_trig;
|
|
|
|
DELETE FROM kamailio.dialplan;
|
|
|
|
DELIMITER |
|
|
|
|
CREATE TRIGGER voip_rwrules_crepl_trig AFTER INSERT ON voip_rewrite_rules
|
|
FOR EACH ROW BEGIN
|
|
|
|
INSERT INTO kamailio.dialplan (dpid,pr,match_op,match_exp,match_len,subst_exp,repl_exp,attrs)
|
|
VALUES(NEW.set_id,NEW.priority,1,NEW.match_pattern,0,NEW.match_pattern,NEW.replace_pattern,'');
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_rwrules_urepl_trig AFTER UPDATE ON voip_rewrite_rules
|
|
FOR EACH ROW BEGIN
|
|
|
|
UPDATE kamailio.dialplan
|
|
SET pr = NEW.priority,
|
|
match_exp = NEW.match_pattern,
|
|
subst_exp = NEW.match_pattern,
|
|
repl_exp = NEW.replace_pattern
|
|
WHERE dpid = OLD.set_id
|
|
AND pr = OLD.priority
|
|
AND match_exp = OLD.match_pattern
|
|
AND subst_exp = OLD.match_pattern
|
|
AND repl_exp = OLD.replace_pattern;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_rwrules_drepl_trig BEFORE DELETE ON voip_rewrite_rules
|
|
FOR EACH ROW BEGIN
|
|
|
|
DELETE FROM kamailio.dialplan
|
|
WHERE dpid = OLD.set_id
|
|
AND pr = OLD.priority
|
|
AND match_exp = OLD.match_pattern
|
|
AND subst_exp = OLD.match_pattern
|
|
AND repl_exp = OLD.replace_pattern;
|
|
|
|
END;
|
|
|
|
|
|
|
CREATE TRIGGER voip_rwrulesets_drepl_trig BEFORE DELETE ON voip_rewrite_rule_sets
|
|
FOR EACH ROW BEGIN
|
|
|
|
-- work around MySQL bug. the cascaded delete should trigger our
|
|
-- voip_dom_preferences delete action, but doesn't
|
|
DELETE FROM kamailio.dialplan WHERE dpid = OLD.id;
|
|
|
|
END;
|
|
|
|
|
|
|
DELIMITER ;
|
|
|
|
INSERT INTO voip_preferences (attribute, type, usr_pref, dom_pref, peer_pref, data_type, max_occur, description, modify_timestamp)
|
|
VALUES('rewrite_rule_set', 1, 1, 1, 1, 'int', 1, 'Specifies the list of caller and callee rewrite rules which should be applied for incoming and outgoing calls.', '1970-01-01 00:00:00');
|
|
|
|
-- create rw rules backup for upgrade
|
|
CREATE TABLE `voip_domain_rewrites_rwsmig` SELECT * FROM `voip_domain_rewrites`;
|
|
CREATE TABLE `voip_domain_rwsmig` SELECT b.domain_id,
|
|
b.value AS dp_caller_in_id,
|
|
d.value AS dp_callee_in_id,
|
|
f.value AS dp_caller_out_id,
|
|
h.value AS dp_callee_out_id
|
|
FROM `voip_preferences` a INNER JOIN `voip_dom_preferences` b
|
|
ON a.attribute = 'dp_dom_caller_in'
|
|
AND a.id = b.attribute_id
|
|
INNER JOIN `voip_preferences` c
|
|
ON c.attribute = 'dp_dom_callee_in'
|
|
INNER JOIN `voip_dom_preferences` d
|
|
ON c.id = d.attribute_id
|
|
AND b.domain_id = d.domain_id
|
|
INNER JOIN `voip_preferences` e
|
|
ON e.attribute = 'dp_dom_caller_out'
|
|
INNER JOIN `voip_dom_preferences` f
|
|
ON e.id = f.attribute_id
|
|
AND d.domain_id = f.domain_id
|
|
INNER JOIN `voip_preferences` g
|
|
ON g.attribute = 'dp_dom_callee_out'
|
|
INNER JOIN `voip_dom_preferences` h
|
|
ON g.id = h.attribute_id
|
|
AND f.domain_id = h.domain_id;
|
|
CREATE TABLE `voip_peer_rewrites_rwsmig` SELECT * FROM `voip_peer_rewrites`;
|
|
CREATE TABLE `voip_peer_hosts_rwsmig` SELECT * FROM `voip_peer_hosts`;
|
|
|
|
DROP TABLE `voip_domain_rewrites`;
|
|
DROP TABLE `voip_peer_rewrites`;
|