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

34 lines
1.7 KiB

USE provisioning;
SET autocommit=1;
CREATE TABLE `voip_subscriber_location_mappings` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`subscriber_id` int(11) unsigned NOT NULL,
`location` varchar(255) NOT NULL,
`caller_pattern` varchar(255) DEFAULT NULL,
`callee_pattern` varchar(255) DEFAULT NULL,
`mode` ENUM ('add', 'replace','offline') NOT NULL DEFAULT 'replace',
`to_username` varchar(255) DEFAULT NULL,
`external_id` varchar(255) DEFAULT NULL,
`enabled` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `subscriber_id_idx` (`subscriber_id`),
KEY `external_id_idx` (`external_id`),
CONSTRAINT `v_subscriber_ref` FOREIGN KEY (`subscriber_id`) REFERENCES `voip_subscribers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
INSERT INTO voip_subscriber_location_mappings (subscriber_id, location, caller_pattern, callee_pattern, mode, to_username)
SELECT u.subscriber_id, u.value, '.+', '.+', COALESCE(u2.value, 'replace') as mode, a.username as to_username
FROM voip_preferences p
JOIN voip_preferences p2
JOIN voip_usr_preferences u ON u.attribute_id = p.id
LEFT OUTER JOIN voip_usr_preferences u2 ON u2.attribute_id = p2.id
LEFT OUTER JOIN voip_dbaliases a ON a.subscriber_id = u.subscriber_id AND a.devid_alias IS NOT NULL
WHERE p.attribute = 'location_from_subscriber'
AND p2.attribute = 'location_from_subscriber_mode'
AND u.subscriber_id = u2.subscriber_id;
DELETE e FROM voip_preferences_enum e JOIN voip_preferences p ON p.id = e.preference_id WHERE p.attribute = 'location_from_subscriber_mode';
DELETE FROM voip_preferences WHERE attribute = 'location_from_subscriber';
DELETE FROM voip_preferences WHERE attribute = 'location_from_subscriber_mode';