1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
ALTER TABLE `mapOfTheDay` DROP INDEX `UniqueTypeDate` ,
ADD UNIQUE `UniqueTypeDate` ( `mapDate` , `mapType` );
ALTER TABLE `mapOfTheDay` ADD `championPointsWorth` INT NOT NULL DEFAULT '0';
ALTER TABLE `users` ADD `totalMazes` INT NOT NULL DEFAULT '0',
ADD `totalMoves` INT NOT NULL DEFAULT '0';
ALTER TABLE `solutions` ADD `isTiedForHighScore` BOOLEAN NOT NULL DEFAULT '0';
ALTER TABLE `users` ADD `challengeTier` INT NOT NULL ,
ADD `championPoints` INT NOT NULL ,
ADD `totalWins` INT DEFAULT '0' NOT NULL ,
ADD `totalTies` INT DEFAULT '0' NOT NULL ;
ALTER TABLE `solutions` ADD `championPointsWorth` INT DEFAULT '0' NOT NULL ,
ADD `isHighScore` TINYINT( 1 ) NOT NULL ;
ALTER TABLE `solutions` ADD `isTiedForHighScore` BOOLEAN NOT NULL DEFAULT '0';
-- Add the 'mapExpireTime' column
ALTER TABLE `mapOfTheDay` ADD `mapExpireTime` DATETIME NULL DEFAULT NULL AFTER `mapDate`;
UPDATE mapOfTheDay
SET mapExpireTime = DATE_ADD(mapDate, INTERVAL 1 DAY)
WHERE mapType <> 5;
UPDATE mapOfTheDay
SET mapExpireTime = DATE_ADD(mapDate, INTERVAL 2 DAY)
WHERE mapType = 5;
ALTER TABLE `mapOfTheDay` CHANGE `mapExpireTime` `mapExpireTime` DATETIME NOT NULL;
ALTER TABLE `mapOfTheDay` ADD INDEX ( `mapExpireTime` , `mapType` );
-- The new code relies on these being unique, so we'll enforce that through indices. Make sure you
-- verify these ARE unique in the DB before adding these indices (they weren't in my test DB)
-- Should probably run these two commands by themselves, one at a time
ALTER TABLE `challengeMaps` ADD UNIQUE ( `challengeTier` , `challengeSuborder`);
ALTER TABLE `challenges`
DROP INDEX `mapID` ,
ADD UNIQUE `mapID` ( `mapID` , `ordering` );
-- Move shit from userData table to users
ALTER TABLE `users` ADD `displayColor` VARCHAR( 7 ) NOT NULL DEFAULT '#cccccc' ,
ADD `wallColor` VARCHAR( 7 ) NOT NULL DEFAULT '#666666' ,
ADD `wallEmblem` VARCHAR( 64 ) NOT NULL DEFAULT 'blank.png';
UPDATE users, userData
SET users.displayColor = userData.displayColor,
users.wallColor = userData.wallColor,
users.wallEmblem = userData.wallEmblem
WHERE users.ID = userData.userID;
DROP TABLE `userData`;
ALTER TABLE `users` ADD `dateChatGaggedUntil` DATETIME NULL ,
ADD `isOptedOutOfEmails` BOOLEAN NOT NULL DEFAULT '0';
-- Most special maps (and some others) have the map-name in the map code. Copy it to the name column.
UPDATE maps
INNER JOIN
(
-- Get the code substring, starting at the map name
SELECT SUBSTRING(code, LENGTH(SUBSTRING_INDEX(code, '.', 5))+2) AS codeSubstring, Id
FROM (SELECT code, Id FROM maps) AS mapsInner
) AS mapsOuter ON maps.Id = mapsOuter.Id
INNER JOIN mapOfTheDay ON maps.Id = mapOfTheDay.mapId
SET maps.name = SUBSTRING(codeSubstring, 1, INSTR(codeSubstring, ':')-2)
WHERE maps.name IS NULL;
-- Rename the remaining maps
UPDATE maps
INNER JOIN mapOfTheDay ON maps.Id = mapOfTheDay.mapId
SET maps.name = 'Simple'
WHERE mapOfTheDay.mapType = 1
AND (maps.name IS NULL OR maps.name = '');
UPDATE maps
INNER JOIN mapOfTheDay ON maps.Id = mapOfTheDay.mapId
SET maps.name = 'Normal'
WHERE mapOfTheDay.mapType = 2
AND (maps.name IS NULL OR maps.name = '');
UPDATE maps
INNER JOIN mapOfTheDay ON maps.Id = mapOfTheDay.mapId
SET maps.name = 'Complex'
WHERE mapOfTheDay.mapType = 3
AND (maps.name IS NULL OR maps.name = '');
UPDATE maps
INNER JOIN mapOfTheDay ON maps.Id = mapOfTheDay.mapId
SET maps.name = 'Special'
WHERE mapOfTheDay.mapType = 4
AND (maps.name IS NULL OR maps.name = '');
UPDATE maps
INNER JOIN mapOfTheDay ON maps.Id = mapOfTheDay.mapId
SET maps.name = 'Ultra Complex'
WHERE mapOfTheDay.mapType = 5
AND (maps.name IS NULL OR maps.name = '');
|