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/9086.up

136 lines
7.2 KiB

USE provisioning;
ALTER TABLE voip_preferences_enum ADD COLUMN default_val BOOLEAN DEFAULT NULL;
DELIMITER |
-- update existing enum preferences if the value
-- changes in voip_preferences_enum.value
CREATE TRIGGER enum_update AFTER UPDATE ON voip_preferences_enum
FOR EACH ROW BEGIN
UPDATE voip_usr_preferences SET value=NEW.value
WHERE attribute_id=NEW.preference_id;
UPDATE voip_dom_preferences SET value=NEW.value
WHERE attribute_id=NEW.preference_id;
UPDATE voip_peer_preferences SET value=NEW.value
WHERE attribute_id=NEW.preference_id;
UPDATE voip_preferences_enum SET default_val=NEW.value
WHERE OLD.id=NEW.id AND default_val IS NOT NULL AND default_val=OLD.value;
END |
-- update preferences for existing domains / peer hosts /subscribers
-- when enum preferences are created that use a default value
-- (does not care about reseller_id)
CREATE TRIGGER enum_set_default AFTER INSERT ON voip_preferences_enum
FOR EACH ROW BEGIN
IF (NEW.dom_pref=1 AND NEW.default_val = 1 AND NEW.value IS NOT NULL) THEN
INSERT into voip_dom_preferences (domain_id, attribute_id, value)
SELECT id, NEW.preference_id, NEW.value
FROM voip_domains;
ELSEIF (NEW.peer_pref=1 AND NEW.default_val = 1 AND NEW.value IS NOT NULL) THEN
INSERT into voip_peer_preferences (peer_host_id, attribute_id, value)
SELECT id, NEW.preference_id, NEW.value
FROM voip_peer_hosts;
ELSEIF (NEW.usr_pref=1 AND NEW.default_val = 1 AND NEW.value IS NOT NULL) THEN
INSERT into voip_usr_preferences (subscriber_id, attribute_id, value)
SELECT id, NEW.preference_id, NEW.value
FROM voip_subscribers;
END IF;
END |
-- set default values for domain preferences
-- when adding domains
DROP TRIGGER voip_dom_crepl_trig |
-- LOCK voip_domains !
CREATE TRIGGER voip_dom_crepl_trig AFTER INSERT ON voip_domains
FOR EACH ROW BEGIN
-- old action_statement (2012-06-18)
INSERT INTO kamailio.domain (domain) VALUES(NEW.domain);
-- new stuff
INSERT INTO voip_dom_preferences (domain_id, attribute_id, value)
SELECT NEW.id, p.id, pe.value
FROM voip_preferences p, voip_preferences_enum pe
WHERE p.id=preference_id AND p.dom_pref=1 AND pe.dom_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;
END |
-- set default values for peer preferences
-- when adding peer hosts
DROP TRIGGER voip_phost_crepl_trig |
CREATE TRIGGER voip_phost_crepl_trig AFTER INSERT ON voip_peer_hosts
FOR EACH ROW BEGIN
-- old action_statement (2012-06-18)
INSERT INTO kamailio.lcr_gw (lcr_id, gw_name, ip_addr, hostname, port, uri_scheme, transport, strip, flags, group_id)
VALUES(1, NEW.name, NEW.ip, NEW.host, NEW.port, 1, 1, 0, NEW.id, NEW.group_id);
INSERT INTO kamailio.lcr_rule_target (lcr_id, rule_id, gw_id, priority, weight)
SELECT rule.lcr_id, rule.id, LAST_INSERT_ID(), vpg.priority, NEW.weight
FROM kamailio.lcr_rule rule
INNER JOIN provisioning.voip_peer_groups vpg ON vpg.id = rule.group_id
WHERE vpg.id = NEW.group_id;
-- new stuff
INSERT INTO voip_peer_preferences (peer_host_id, attribute_id, value)
SELECT NEW.id, p.id, pe.value
FROM voip_preferences p, voip_preferences_enum pe
WHERE p.id=preference_id AND p.peer_pref=1 AND pe.peer_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;
END |
DROP TRIGGER voip_sub_crepl_trig |
CREATE TRIGGER voip_sub_crepl_trig AFTER INSERT ON voip_subscribers
FOR EACH ROW BEGIN
-- old action_statement (2012-06-18)
DECLARE subscriber_domain varchar(127);
SELECT domain INTO subscriber_domain FROM voip_domains where id = NEW.domain_id;
INSERT INTO kamailio.subscriber (username, domain, uuid, password, datetime_created, ha1, ha1b)
VALUES(NEW.username, subscriber_domain, NEW.uuid, NEW.password, '0',
MD5(CONCAT(NEW.username, ':', subscriber_domain, ':', NEW.password)),
MD5(CONCAT(NEW.username, '@', subscriber_domain, ':', subscriber_domain, ':', NEW.password)));
-- new stuff
INSERT INTO voip_usr_preferences (subscriber_id, attribute_id, value)
SELECT NEW.id, p.id, pe.value
FROM voip_preferences p, voip_preferences_enum pe
WHERE p.id=preference_id AND p.usr_pref=1 AND pe.usr_pref=1 AND pe.default_val=1 AND pe.value IS NOT NULL;
END |
DELIMITER ;
-- -- delete example
-- DELETE FROM voip_preferences_enum WHERE preference_id = (SELECT id FROM voip_preferences WHERE attribute='testpref');
-- DELETE FROM voip_preferences WHERE attribute='testpref';
-- -- example
-- INSERT INTO voip_preferences (attribute, type, max_occur, usr_pref, dom_pref, peer_pref, internal, data_type, read_only, description)
-- VALUES('testpref', 1, 1, 0, 1, 1, 0, 'enum', 0, 'Imagine some really useful information here');
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref'), 'domain default', 0, 0, 1, 0, 1);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref'), 'peer default', 0, 0, 0, 1, 1);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref'), 'forward', '1', 0, 1, 1, 0);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref'), 'do not forward', '2', 0, 1, 1, 0);
--
-- -- delete example
-- DELETE FROM voip_preferences_enum WHERE preference_id = (SELECT id FROM voip_preferences WHERE attribute='testpref2');
-- DELETE FROM voip_preferences WHERE attribute='testpref2';
-- -- example
-- INSERT INTO voip_preferences (attribute, type, max_occur, usr_pref, dom_pref, peer_pref, internal, data_type, read_only, description)
-- VALUES('testpref2', 1, 1, 1, 1, 1, 0, 'enum', 0, 'Imagine some really useful information here');
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref2'), 'domain default', 0, 0, 1, 0, 1);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref2'), 'peer default', 0, 0, 0, 1, 1);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref2'), 'user default', 0, 1, 0, 0, 1);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref2'), 'relay', '1', 1, 1, 1, 0);
-- INSERT INTO voip_preferences_enum (preference_id, label, value, usr_pref, dom_pref, peer_pref, default_val)
-- VALUES ((SELECT id FROM voip_preferences WHERE attribute = 'testpref2'), 'do not relay', '2', 1, 1, 1, 0);