mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Add database migrations for main database.
This commit is contained in:
193
code/modules/migrations/SS13/001-create-erro-tables.dm
Normal file
193
code/modules/migrations/SS13/001-create-erro-tables.dm
Normal file
@@ -0,0 +1,193 @@
|
||||
/datum/migration/ss13/_001
|
||||
id = 1
|
||||
name = "Initial state"
|
||||
|
||||
/datum/migration/ss13/_001/up()
|
||||
var/sql = {"
|
||||
CREATE TABLE IF NOT EXISTS `erro_admin` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`rank` varchar(32) NOT NULL DEFAULT 'Administrator',
|
||||
`level` int(2) NOT NULL DEFAULT '0',
|
||||
`flags` int(16) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_admin_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime NOT NULL,
|
||||
`adminckey` varchar(32) NOT NULL,
|
||||
`adminip` varchar(18) NOT NULL,
|
||||
`log` text NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_ban` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`bantime` datetime NOT NULL,
|
||||
`serverip` varchar(32) NOT NULL,
|
||||
`bantype` varchar(32) NOT NULL,
|
||||
`reason` text NOT NULL,
|
||||
`job` varchar(32) DEFAULT NULL,
|
||||
`duration` int(11) NOT NULL,
|
||||
`rounds` int(11) DEFAULT NULL,
|
||||
`expiration_time` datetime NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`computerid` varchar(32) NOT NULL,
|
||||
`ip` varchar(32) NOT NULL,
|
||||
`a_ckey` varchar(32) NOT NULL,
|
||||
`a_computerid` varchar(32) NOT NULL,
|
||||
`a_ip` varchar(32) NOT NULL,
|
||||
`who` text NOT NULL,
|
||||
`adminwho` text NOT NULL,
|
||||
`edits` text,
|
||||
`unbanned` tinyint(1) DEFAULT NULL,
|
||||
`unbanned_datetime` datetime DEFAULT NULL,
|
||||
`unbanned_ckey` varchar(32) DEFAULT NULL,
|
||||
`unbanned_computerid` varchar(32) DEFAULT NULL,
|
||||
`unbanned_ip` varchar(32) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_feedback` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`time` datetime NOT NULL,
|
||||
`round_id` int(8) NOT NULL,
|
||||
`var_name` varchar(32) NOT NULL,
|
||||
`var_value` int(16) DEFAULT NULL,
|
||||
`details` text,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_player` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`firstseen` datetime NOT NULL,
|
||||
`lastseen` datetime NOT NULL,
|
||||
`ip` varchar(18) NOT NULL,
|
||||
`computerid` varchar(32) NOT NULL,
|
||||
`lastadminrank` varchar(32) NOT NULL DEFAULT 'Player',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `ckey` (`ckey`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_poll_option` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`text` varchar(255) NOT NULL,
|
||||
`percentagecalc` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`minval` int(3) DEFAULT NULL,
|
||||
`maxval` int(3) DEFAULT NULL,
|
||||
`descmin` varchar(32) DEFAULT NULL,
|
||||
`descmid` varchar(32) DEFAULT NULL,
|
||||
`descmax` varchar(32) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_poll_question` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`polltype` varchar(16) NOT NULL DEFAULT 'OPTION',
|
||||
`starttime` datetime NOT NULL,
|
||||
`endtime` datetime NOT NULL,
|
||||
`question` varchar(255) NOT NULL,
|
||||
`adminonly` tinyint(1) DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_poll_textreply` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime NOT NULL,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`ip` varchar(18) NOT NULL,
|
||||
`replytext` text NOT NULL,
|
||||
`adminrank` varchar(32) NOT NULL DEFAULT 'Player',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_poll_vote` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime NOT NULL,
|
||||
`pollid` int(11) NOT NULL,
|
||||
`optionid` int(11) NOT NULL,
|
||||
`ckey` varchar(255) NOT NULL,
|
||||
`ip` varchar(16) NOT NULL,
|
||||
`adminrank` varchar(32) NOT NULL,
|
||||
`rating` int(2) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `erro_privacy` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`datetime` datetime NOT NULL,
|
||||
`ckey` varchar(32) NOT NULL,
|
||||
`option` varchar(128) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Non-erro tables.
|
||||
-- -----------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `death` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
`pod` TEXT NOT NULL COMMENT 'Place of death' ,
|
||||
`coord` TEXT NOT NULL COMMENT 'X, Y, Z POD' ,
|
||||
`tod` DATETIME NOT NULL COMMENT 'Time of death' ,
|
||||
`job` TEXT NOT NULL ,
|
||||
`special` TEXT NOT NULL ,
|
||||
`name` TEXT NOT NULL ,
|
||||
`byondkey` TEXT NOT NULL ,
|
||||
`laname` TEXT NOT NULL COMMENT 'Last attacker name' ,
|
||||
`lakey` TEXT NOT NULL COMMENT 'Last attacker key' ,
|
||||
`gender` TEXT NOT NULL ,
|
||||
`bruteloss` INT(11) NOT NULL ,
|
||||
`brainloss` INT(11) NOT NULL ,
|
||||
`fireloss` INT(11) NOT NULL ,
|
||||
`oxyloss` INT(11) NOT NULL ,
|
||||
PRIMARY KEY (`id`) )
|
||||
ENGINE = MyISAM
|
||||
DEFAULT CHARACTER SET = latin1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `karma` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
`spendername` TEXT NOT NULL ,
|
||||
`spenderkey` TEXT NOT NULL ,
|
||||
`receivername` TEXT NOT NULL ,
|
||||
`receiverkey` TEXT NOT NULL ,
|
||||
`receiverrole` TEXT NOT NULL ,
|
||||
`receiverspecial` TEXT NOT NULL ,
|
||||
`isnegative` TINYINT(1) NOT NULL ,
|
||||
`spenderip` TEXT NOT NULL ,
|
||||
`time` DATETIME NOT NULL ,
|
||||
PRIMARY KEY (`id`) )
|
||||
ENGINE = MyISAM
|
||||
DEFAULT CHARACTER SET = latin1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `karmatotals` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
`byondkey` TEXT NOT NULL ,
|
||||
`karma` INT(11) NOT NULL ,
|
||||
PRIMARY KEY (`id`) )
|
||||
ENGINE = MyISAM
|
||||
DEFAULT CHARACTER SET = latin1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `library` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
`author` TEXT NOT NULL ,
|
||||
`title` TEXT NOT NULL ,
|
||||
`content` TEXT NOT NULL ,
|
||||
`category` TEXT NOT NULL ,
|
||||
PRIMARY KEY (`id`) )
|
||||
ENGINE = MyISAM
|
||||
DEFAULT CHARACTER SET = latin1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `population` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
`playercount` INT(11) NULL DEFAULT NULL ,
|
||||
`admincount` INT(11) NULL DEFAULT NULL ,
|
||||
`time` DATETIME NOT NULL ,
|
||||
PRIMARY KEY (`id`) )
|
||||
ENGINE = MyISAM
|
||||
DEFAULT CHARACTER SET = latin1;
|
||||
"}
|
||||
execute(sql)
|
||||
16
code/modules/migrations/SS13/002-create-session-table.dm
Normal file
16
code/modules/migrations/SS13/002-create-session-table.dm
Normal file
@@ -0,0 +1,16 @@
|
||||
/datum/migration/ss13/_002
|
||||
id = 2
|
||||
name = "Create Session Table"
|
||||
|
||||
/datum/migration/ss13/_002/up()
|
||||
var/sql={"
|
||||
CREATE TABLE IF NOT EXISTS admin_sessions (
|
||||
`sessID` CHAR(36) PRIMARY KEY,
|
||||
`ckey` VARCHAR(255),
|
||||
`expires` DATETIME
|
||||
);
|
||||
"}
|
||||
execute(sql)
|
||||
|
||||
/datum/migration/ss13/_002/down()
|
||||
execute("DROP TABLE IF EXISTS admin_sessions;");
|
||||
15
code/modules/migrations/SS13/003-add-multi-option-polls.dm
Normal file
15
code/modules/migrations/SS13/003-add-multi-option-polls.dm
Normal file
@@ -0,0 +1,15 @@
|
||||
/datum/migration/ss13/_003
|
||||
id = 3
|
||||
name = "Add Multi-Option Polls"
|
||||
|
||||
/datum/migration/ss13/_003/up()
|
||||
if(!hasColumn("erro_poll_question","multiplechoiceoptions"))
|
||||
execute("ALTER TABLE erro_poll_question ADD COLUMN `multiplechoiceoptions` int(2) DEFAULT NULL;")
|
||||
else
|
||||
warning("multiplechoiceoptions column exists. Skipping addition.")
|
||||
|
||||
/datum/migration/ss13/_003/down()
|
||||
if(hasColumn("erro_poll_question","multiplechoiceoptions"))
|
||||
execute("ALTER TABLE erro_poll_question DROP COLUMN `multiplechoiceoptions`;")
|
||||
else
|
||||
warning("multiplechoiceoptions column does not exist. Skipping drop.")
|
||||
15
code/modules/migrations/SS13/004-add-ip-to-sessions.dm
Normal file
15
code/modules/migrations/SS13/004-add-ip-to-sessions.dm
Normal file
@@ -0,0 +1,15 @@
|
||||
/datum/migration/ss13/_004
|
||||
id = 4
|
||||
name = "Add IP to Sessions"
|
||||
|
||||
/datum/migration/ss13/_003/up()
|
||||
if(!hasColumn("admin_sessions","IP"))
|
||||
execute("ALTER TABLE admin_sessions ADD COLUMN `IP` VARCHAR(255) DEFAULT NULL;");
|
||||
else
|
||||
warning("IP column exists. Skipping addition.")
|
||||
|
||||
/datum/migration/ss13/_003/down()
|
||||
if(hasColumn("admin_sessions","IP"))
|
||||
execute("ALTER TABLE admin_sessions DROP COLUMN `IP`;");
|
||||
else
|
||||
warning("IP column does not exist. Skipping drop.")
|
||||
2
code/modules/migrations/SS13/_base.dm
Normal file
2
code/modules/migrations/SS13/_base.dm
Normal file
@@ -0,0 +1,2 @@
|
||||
/datum/migration/ss13
|
||||
package="ss13"
|
||||
@@ -41,4 +41,7 @@
|
||||
return query
|
||||
|
||||
/datum/migration/proc/hasTable(var/tableName)
|
||||
return hasResult("SHOW TABLES LIKE '[tableName]")
|
||||
return hasResult("SHOW TABLES LIKE '[tableName]'")
|
||||
|
||||
/datum/migration/proc/hasColumn(var/tableName, var/columnName)
|
||||
return hasResult("SHOW COLUMNS FROM [tableName] LIKE '[columnName]'")
|
||||
Reference in New Issue
Block a user