Combines the following repositories into one: https://github.com/mattermost/mattermost-server https://github.com/mattermost/mattermost-webapp https://github.com/mattermost/focalboard https://github.com/mattermost/mattermost-plugin-playbooks
107 строки
3.0 KiB
SQL
107 строки
3.0 KiB
SQL
CREATE TABLE IF NOT EXISTS Preferences (
|
|
UserId varchar(26) NOT NULL,
|
|
Category varchar(32) NOT NULL,
|
|
Name varchar(32) NOT NULL,
|
|
Value text,
|
|
PRIMARY KEY (UserId, Category, Name)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
|
WHERE table_name = 'Preferences'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'Value'
|
|
AND data_type != 'text'
|
|
) > 0,
|
|
'ALTER TABLE Preferences MODIFY Value text;',
|
|
'SELECT 1'
|
|
));
|
|
|
|
PREPARE alterIfExists FROM @preparedStatement;
|
|
EXECUTE alterIfExists;
|
|
DEALLOCATE PREPARE alterIfExists;
|
|
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Preferences'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_preferences_category'
|
|
) > 0,
|
|
'SELECT 1',
|
|
'CREATE INDEX idx_preferences_category ON Preferences(Category);'
|
|
));
|
|
|
|
PREPARE createIndexIfNotExists FROM @preparedStatement;
|
|
EXECUTE createIndexIfNotExists;
|
|
DEALLOCATE PREPARE createIndexIfNotExists;
|
|
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Preferences'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_preferences_name'
|
|
) > 0,
|
|
'SELECT 1',
|
|
'CREATE INDEX idx_preferences_name ON Preferences(Name);'
|
|
));
|
|
|
|
PREPARE createIndexIfNotExists FROM @preparedStatement;
|
|
EXECUTE createIndexIfNotExists;
|
|
DEALLOCATE PREPARE createIndexIfNotExists;
|
|
|
|
CREATE PROCEDURE RenameSolarizedThemeWithUnderscore()
|
|
BEGIN
|
|
DECLARE finished INTEGER DEFAULT 0;
|
|
DECLARE curUserId VARCHAR(26);
|
|
DECLARE curName VARCHAR(32);
|
|
DECLARE curValue text;
|
|
|
|
DECLARE preference
|
|
CURSOR FOR
|
|
SELECT UserId, Name, Value
|
|
FROM Preferences
|
|
WHERE Category = 'theme' AND Value LIKE '%solarized_%';
|
|
|
|
-- declare NOT FOUND handler
|
|
DECLARE CONTINUE HANDLER
|
|
FOR NOT FOUND SET finished = 1;
|
|
|
|
OPEN preference;
|
|
|
|
getPreference: LOOP
|
|
FETCH preference INTO curUserId, curName, curValue;
|
|
IF finished = 1 THEN
|
|
LEAVE getPreference;
|
|
END IF;
|
|
|
|
-- update affected rows
|
|
UPDATE Preferences
|
|
SET Value = replace(curValue, 'solaraized_', 'solarized-')
|
|
WHERE Category = 'theme'
|
|
AND UserId = curUserId
|
|
AND Name = curName;
|
|
END LOOP getPreference;
|
|
END;
|
|
|
|
CALL RenameSolarizedThemeWithUnderscore();
|
|
|
|
DROP PROCEDURE IF EXISTS RenameSolarizedThemeWithUnderscore;
|
|
|
|
SET @preparedStatement = (SELECT IF(
|
|
(
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'Preferences'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_preferences_user_id'
|
|
) > 0,
|
|
'DROP INDEX idx_preferences_user_id ON Preferences;',
|
|
'SELECT 1'
|
|
));
|
|
|
|
PREPARE removeIndexIfExists FROM @preparedStatement;
|
|
EXECUTE removeIndexIfExists;
|
|
DEALLOCATE PREPARE removeIndexIfExists;
|