108 lines
2.3 KiB
MySQL
108 lines
2.3 KiB
MySQL
|
-- LegacyWorlds Beta 6
|
||
|
-- PostgreSQL database scripts
|
||
|
--
|
||
|
-- System & game updates status
|
||
|
--
|
||
|
-- Copyright(C) 2004-2010, DeepClone Development
|
||
|
-- --------------------------------------------------------
|
||
|
|
||
|
--
|
||
|
-- System status
|
||
|
--
|
||
|
CREATE TABLE sys.status(
|
||
|
next_tick BIGINT NOT NULL
|
||
|
DEFAULT 0 ,
|
||
|
current_tick BIGINT ,
|
||
|
|
||
|
last_msg_recap TIMESTAMP WITHOUT TIME ZONE
|
||
|
NOT NULL
|
||
|
DEFAULT now( ) ,
|
||
|
last_admin_recap TIMESTAMP WITHOUT TIME ZONE
|
||
|
NOT NULL
|
||
|
DEFAULT now( ) ,
|
||
|
last_error_recap TIMESTAMP WITHOUT TIME ZONE
|
||
|
NOT NULL
|
||
|
DEFAULT now( ) ,
|
||
|
|
||
|
maintenance_start TIMESTAMP WITHOUT TIME ZONE ,
|
||
|
maintenance_end TIMESTAMP WITHOUT TIME ZONE ,
|
||
|
maintenance_text TEXT
|
||
|
);
|
||
|
|
||
|
INSERT INTO sys.status DEFAULT VALUES;
|
||
|
|
||
|
GRANT SELECT ON sys.status TO :dbuser;
|
||
|
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Ticker status
|
||
|
--
|
||
|
|
||
|
CREATE TYPE ticker_task_status
|
||
|
AS ENUM( 'RUNNING' , 'STOPPED' , 'AUTO' );
|
||
|
|
||
|
CREATE TABLE sys.ticker(
|
||
|
id SERIAL PRIMARY KEY ,
|
||
|
task_name VARCHAR(64) NOT NULL UNIQUE ,
|
||
|
status ticker_task_status NOT NULL ,
|
||
|
auto_start TIMESTAMP WITHOUT TIME ZONE
|
||
|
);
|
||
|
|
||
|
INSERT INTO sys.ticker( task_name , status )
|
||
|
VALUES ( 'Game update' , 'STOPPED' );
|
||
|
|
||
|
GRANT SELECT ON sys.ticker TO :dbuser;
|
||
|
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Updates
|
||
|
--
|
||
|
CREATE TABLE sys.updates(
|
||
|
id BIGSERIAL NOT NULL PRIMARY KEY ,
|
||
|
gu_type update_type NOT NULL ,
|
||
|
status processing_status NOT NULL DEFAULT 'FUTURE' ,
|
||
|
last_tick BIGINT NOT NULL DEFAULT -1
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_updates_finder
|
||
|
ON sys.updates (gu_type, status, last_tick);
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Planet updates
|
||
|
--
|
||
|
CREATE TABLE verse.updates(
|
||
|
update_id BIGINT NOT NULL PRIMARY KEY ,
|
||
|
planet_id INT NOT NULL
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_planetupdates_planet
|
||
|
ON verse.updates (planet_id);
|
||
|
|
||
|
ALTER TABLE verse.updates
|
||
|
ADD CONSTRAINT fk_planetupdates_update
|
||
|
FOREIGN KEY ( update_id ) REFERENCES sys.updates ,
|
||
|
ADD CONSTRAINT fk_planetupdates_planet
|
||
|
FOREIGN KEY ( planet_id ) REFERENCES verse.planets;
|
||
|
|
||
|
|
||
|
--
|
||
|
-- Empire updates
|
||
|
--
|
||
|
CREATE TABLE emp.updates(
|
||
|
update_id BIGINT NOT NULL PRIMARY KEY ,
|
||
|
empire_id INT NOT NULL
|
||
|
);
|
||
|
|
||
|
CREATE INDEX idx_empireupdates_empire
|
||
|
ON emp.updates( empire_id );
|
||
|
|
||
|
ALTER TABLE emp.updates
|
||
|
ADD CONSTRAINT fk_empireupdates_update
|
||
|
FOREIGN KEY ( update_id ) REFERENCES sys.updates ,
|
||
|
ADD CONSTRAINT fk_empireupdates_empire
|
||
|
FOREIGN KEY ( empire_id ) REFERENCES emp.empires
|
||
|
ON DELETE CASCADE;
|