mirror of https://github.com/sipwise/db-schema.git
* voip_preferences 'type' can be 2, means' blob' * voip_preferences data_type enum add: 'blob' * 4 new tables: - voip_dom_preferences_blob - voip_usr_preferences_blob - voip_contract_preferences_blob - voip_peer_preferences_blob (they are innodb page compressed) * triggers on insert/delete on these tables cause the 'value' field of the related voip_usr/dom/contract/peer_preferences table to be updated with the id of the record, required for kamailio to find the related blob record without replicating the blob data * procedure for adding a new blob entry: 1. insert into voip_usr_preferences with the empty value 2. insert into voip_usr_preferences_blob 3. the voip_usr_preferences value will be automatically updated with the id of the created blob record Change-Id: I9330613f50de20bc098a94f3fc28cfd4b3ad3c68mr9.4
parent
f78fcfd453
commit
03f4dd7086
@ -0,0 +1,18 @@
|
||||
USE provisioning;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_dom_preferences_blob_insert;
|
||||
DROP TRIGGER IF EXISTS voip_dom_preferences_blob_delete;
|
||||
DROP TRIGGER IF EXISTS voip_contract_preferences_blob_insert;
|
||||
DROP TRIGGER IF EXISTS voip_contract_preferences_blob_delete;
|
||||
DROP TRIGGER IF EXISTS voip_usr_preferences_blob_insert;
|
||||
DROP TRIGGER IF EXISTS voip_usr_preferences_blob_delete;
|
||||
DROP TRIGGER IF EXISTS voip_peer_preferences_blob_insert;
|
||||
DROP TRIGGER IF EXISTS voip_peer_preferences_blob_delete;
|
||||
|
||||
DROP TABLE voip_dom_preferences_blob;
|
||||
DROP TABLE voip_contract_preferences_blob;
|
||||
DROP TABLE voip_usr_preferences_blob;
|
||||
DROP TABLE voip_peer_preferences_blob;
|
||||
|
||||
ALTER TABLE voip_preferences MODIFY COLUMN data_type enum('boolean','int','string','enum');
|
||||
|
@ -0,0 +1,143 @@
|
||||
USE provisioning;
|
||||
|
||||
CREATE TABLE voip_dom_preferences_blob (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
preference_id INT(11) UNSIGNED NOT NULL,
|
||||
content_type VARCHAR(128) NOT NULL DEFAULT 'application/data',
|
||||
value MEDIUMBLOB,
|
||||
UNIQUE KEY (preference_id),
|
||||
FOREIGN KEY fk_dom_blob_pref_id (preference_id) REFERENCES voip_dom_preferences (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB PAGE_COMPRESSED=1;
|
||||
|
||||
CREATE TABLE voip_contract_preferences_blob (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
preference_id INT(11) UNSIGNED NOT NULL,
|
||||
content_type VARCHAR(128) NOT NULL DEFAULT 'application/data',
|
||||
value MEDIUMBLOB,
|
||||
UNIQUE KEY (preference_id),
|
||||
FOREIGN KEY fk_contract_blob_pref_id (preference_id) REFERENCES voip_contract_preferences (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB PAGE_COMPRESSED=1;
|
||||
|
||||
CREATE TABLE voip_usr_preferences_blob (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
preference_id INT(11) UNSIGNED NOT NULL,
|
||||
content_type VARCHAR(128) NOT NULL DEFAULT 'application/data',
|
||||
value MEDIUMBLOB,
|
||||
UNIQUE KEY (preference_id),
|
||||
FOREIGN KEY fk_usr_blob_pref_id (preference_id) REFERENCES voip_usr_preferences (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB PAGE_COMPRESSED=1;
|
||||
|
||||
CREATE TABLE voip_peer_preferences_blob (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
preference_id INT(11) UNSIGNED NOT NULL,
|
||||
content_type VARCHAR(128) NOT NULL DEFAULT 'application/data',
|
||||
value MEDIUMBLOB,
|
||||
UNIQUE KEY (preference_id),
|
||||
FOREIGN KEY fk_peer_blob_pref_id (preference_id) REFERENCES voip_peer_preferences (id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB PAGE_COMPRESSED=1;
|
||||
|
||||
ALTER TABLE voip_preferences MODIFY COLUMN data_type enum('boolean','int','string','enum','blob');
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_dom_preferences_blob_insert;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_dom_prefences_blob_insert AFTER INSERT ON voip_dom_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_dom_preferences
|
||||
SET value = NEW.id
|
||||
WHERE id = NEW.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_dom_preferences_blob_delete;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_dom_prefences_blob_delete AFTER DELETE ON voip_dom_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_dom_preferences
|
||||
SET value = ''
|
||||
WHERE id = OLD.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_contract_preferences_blob_insert;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_contract_prefences_blob_insert AFTER INSERT ON voip_contract_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_contract_preferences
|
||||
SET value = NEW.id
|
||||
WHERE id = NEW.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_contract_preferences_blob_delete;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_contract_preferences_blob_delete AFTER DELETE ON voip_contract_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_contract_preferences
|
||||
SET value = ''
|
||||
WHERE preference_id = OLD.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_usr_preferences_blob_insert;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_usr_preferences_blob_insert AFTER INSERT ON voip_usr_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_usr_preferences
|
||||
SET value = NEW.id
|
||||
WHERE id = NEW.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_usr_preferences_blob_delete;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_usr_preferences_blob_delete AFTER DELETE ON voip_usr_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_usr_preferences
|
||||
SET value = ''
|
||||
WHERE id = OLD.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_peer_preferences_blob_insert;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_peer_preferences_blob_insert AFTER INSERT ON voip_peer_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_peer_preferences
|
||||
SET value = NEW.id
|
||||
WHERE id = NEW.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
||||
|
||||
DROP TRIGGER IF EXISTS voip_peer_preferences_blob_delete;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER voip_peer_preferences_blob_delete AFTER DELETE ON voip_peer_preferences_blob
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
UPDATE voip_peer_preferences
|
||||
SET value = ''
|
||||
WHERE id = OLD.preference_id;
|
||||
|
||||
END
|
||||
$$
|
||||
DELIMITER ;
|
Loading…
Reference in new issue