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.
136 lines
7.2 KiB
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);
|