This repository has been archived on 2024-07-18. You can view files and clone it, but cannot push or open issues or pull requests.
lwb6/legacyworlds-server/legacyworlds-server-data/db-structure/parts/data/140-status-data.sql

107 lines
2.3 KiB
SQL

-- 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;