Start moving migration stuff!

This commit is contained in:
Jett
2023-10-11 22:39:58 +01:00
parent 44a5d83b1d
commit 0f4ebd7587
23 changed files with 225 additions and 230 deletions

View File

@@ -0,0 +1,152 @@
CREATE TABLE IF NOT EXISTS accounts (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(35) NOT NULL UNIQUE,
password TEXT NOT NULL,
gm_level INT UNSIGNED NOT NULL DEFAULT 0,
locked BOOLEAN NOT NULL DEFAULT FALSE,
banned BOOLEAN NOT NULL DEFAULT FALSE,
play_key_id INT NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
mute_expire BIGINT UNSIGNED NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS charinfo (
id BIGINT NOT NULL PRIMARY KEY,
account_id INT NOT NULL REFERENCES accounts(id),
name VARCHAR(35) NOT NULL,
pending_name VARCHAR(35) NOT NULL,
needs_rename BOOLEAN NOT NULL DEFAULT FALSE,
prop_clone_id BIGINT UNSIGNED AUTO_INCREMENT UNIQUE,
last_login BIGINT UNSIGNED NOT NULL DEFAULT 0,
permission_map BIGINT UNSIGNED NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS charxml (
id BIGINT NOT NULL PRIMARY KEY REFERENCES charinfo(id),
xml_data LONGTEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS command_log (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
character_id BIGINT NOT NULL REFERENCES charinfo(id),
command VARCHAR(256) NOT NULL
);
CREATE TABLE IF NOT EXISTS friends (
player_id BIGINT NOT NULL REFERENCES charinfo(id),
friend_id BIGINT NOT NULL REFERENCES charinfo(id),
best_friend BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (player_id, friend_id)
);
CREATE TABLE IF NOT EXISTS leaderboard (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
game_id INT UNSIGNED NOT NULL DEFAULT 0,
last_played TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
character_id BIGINT NOT NULL REFERENCES charinfo(id),
time BIGINT UNSIGNED NOT NULL,
score BIGINT UNSIGNED NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS mail (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
sender_id INT NOT NULL DEFAULT 0,
sender_name VARCHAR(35) NOT NULL DEFAULT '',
receiver_id BIGINT NOT NULL REFERENCES charinfo(id),
receiver_name VARCHAR(35) NOT NULL,
time_sent BIGINT UNSIGNED NOT NULL,
subject TEXT NOT NULL,
body TEXT NOT NULL,
attachment_id BIGINT NOT NULL DEFAULT 0,
attachment_lot INT NOT NULL DEFAULT 0,
attachment_subkey BIGINT NOT NULL DEFAULT 0,
attachment_count INT NOT NULL DEFAULT 0,
was_read BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE TABLE IF NOT EXISTS object_id_tracker (
last_object_id BIGINT UNSIGNED NOT NULL DEFAULT 0 PRIMARY KEY
);
CREATE TABLE IF NOT EXISTS pet_names (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pet_name TEXT NOT NULL,
approved INT UNSIGNED NOT NULL
);
CREATE TABLE IF NOT EXISTS play_keys (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
key_string CHAR(19) NOT NULL UNIQUE,
key_uses INT NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
active BOOLEAN NOT NULL DEFAULT TRUE
);
CREATE TABLE IF NOT EXISTS properties (
id BIGINT NOT NULL PRIMARY KEY,
owner_id BIGINT NOT NULL REFERENCES charinfo(id),
template_id INT UNSIGNED NOT NULL,
clone_id BIGINT UNSIGNED REFERENCES charinfo(prop_clone_id),
name TEXT NOT NULL,
description TEXT NOT NULL,
rent_amount INT NOT NULL,
rent_due BIGINT NOT NULL,
privacy_option INT NOT NULL,
mod_approved BOOLEAN NOT NULL DEFAULT FALSE,
last_updated BIGINT NOT NULL,
time_claimed BIGINT NOT NULL,
rejection_reason TEXT NOT NULL,
reputation BIGINT UNSIGNED NOT NULL,
zone_id INT NOT NULL
);
CREATE TABLE IF NOT EXISTS ugc (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
account_id INT NOT NULL REFERENCES accounts(id),
character_id BIGINT NOT NULL REFERENCES charinfo(id),
is_optimized BOOLEAN NOT NULL DEFAULT FALSE,
lxfml MEDIUMBLOB NOT NULL,
bake_ao BOOLEAN NOT NULL DEFAULT FALSE,
filename TEXT NOT NULL DEFAULT ('')
);
CREATE TABLE IF NOT EXISTS properties_contents (
id BIGINT NOT NULL PRIMARY KEY,
property_id BIGINT NOT NULL REFERENCES properties(id),
ugc_id INT NULL REFERENCES ugc(id),
lot INT NOT NULL,
x FLOAT NOT NULL,
y FLOAT NOT NULL,
z FLOAT NOT NULL,
rx FLOAT NOT NULL,
ry FLOAT NOT NULL,
rz FLOAT NOT NULL,
rw FLOAT NOT NULL
);
CREATE TABLE IF NOT EXISTS activity_log (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
character_id BIGINT NOT NULL REFERENCES charinfo(id),
activity INT NOT NULL,
time BIGINT UNSIGNED NOT NULL,
map_id INT NOT NULL
);
CREATE TABLE IF NOT EXISTS bug_reports (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
body TEXT NOT NULL,
client_version TEXT NOT NULL,
other_player_id TEXT NOT NULL,
selection TEXT NOT NULL,
submitted TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP()
);
CREATE TABLE IF NOT EXISTS servers (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TEXT NOT NULL,
ip TEXT NOT NULL,
port INT NOT NULL,
state INT NOT NULL,
version INT NOT NULL DEFAULT 0
);

View File

@@ -0,0 +1,8 @@
CREATE TABLE IF NOT EXISTS player_cheat_detections (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
account_id INT REFERENCES accounts(id),
name TEXT REFERENCES charinfo(name),
violation_msg TEXT NOT NULL,
violation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
violation_system_address TEXT NOT NULL
);

View File

@@ -0,0 +1,9 @@
DROP TABLE IF EXISTS `player_cheat_detections`;
CREATE TABLE IF NOT EXISTS player_cheat_detections (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
account_id INT REFERENCES accounts(id),
name TEXT NOT NULL,
violation_msg TEXT NOT NULL,
violation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
violation_system_address TEXT NOT NULL
);

View File

@@ -0,0 +1 @@
ALTER TABLE charinfo ADD UNIQUE (name);

View File

@@ -0,0 +1 @@
ALTER TABLE bug_reports ADD reporter_id INT NOT NULL DEFAULT 0;

View File

@@ -0,0 +1 @@
ALTER TABLE properties ADD COLUMN performance_cost DOUBLE(20, 15) DEFAULT 0.0;

View File

@@ -0,0 +1 @@
UPDATE friends SET player_id = player_id % 0x100000000, friend_id = friend_id % 0x100000000;

View File

@@ -0,0 +1 @@
# This file is here as a mock. The real migration is located in BrickByBrickFix.cpp

View File

@@ -0,0 +1,11 @@
ALTER TABLE properties_contents
ADD COLUMN model_name TEXT NOT NULL DEFAULT "",
ADD COLUMN model_description TEXT NOT NULL DEFAULT "",
ADD COLUMN behavior_1 INT NOT NULL DEFAULT 0,
ADD COLUMN behavior_2 INT NOT NULL DEFAULT 0,
ADD COLUMN behavior_3 INT NOT NULL DEFAULT 0,
ADD COLUMN behavior_4 INT NOT NULL DEFAULT 0,
ADD COLUMN behavior_5 INT NOT NULL DEFAULT 0;
UPDATE properties_contents SET model_name = CONCAT("Objects_", lot, "_name") WHERE model_name = "";
CREATE TABLE IF NOT EXISTS behaviors (id INT NOT NULL, behavior_info TEXT NOT NULL);

View File

@@ -0,0 +1 @@
ALTER TABLE accounts MODIFY play_key_id INT DEFAULT 0;

View File

@@ -0,0 +1 @@
ALTER TABLE accounts MODIFY play_key_id INT DEFAULT NULL;

View File

@@ -0,0 +1,18 @@
ALTER TABLE leaderboard
ADD COLUMN tertiaryScore FLOAT NOT NULL DEFAULT 0,
ADD COLUMN numWins INT NOT NULL DEFAULT 0,
ADD COLUMN timesPlayed INT NOT NULL DEFAULT 1,
MODIFY time INT NOT NULL DEFAULT 0;
/* Can only ALTER one column at a time... */
ALTER TABLE leaderboard CHANGE score primaryScore FLOAT NOT NULL DEFAULT 0;
ALTER TABLE leaderboard CHANGE time secondaryScore FLOAT NOT NULL DEFAULT 0 AFTER primaryScore;
/* A bit messy, but better than going through a bunch of code fixes all to be run once. */
UPDATE leaderboard SET
primaryScore = secondaryScore,
secondaryScore = 0 WHERE game_id IN (1, 44, 46, 47, 48, 49, 53, 103, 104, 108, 1901);
/* Do this last so we dont update entry times erroneously */
ALTER TABLE leaderboard
CHANGE last_played last_played TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP();