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.
lwb5/sql/beta5/structure/01-player-dipl.sql

90 lines
2.6 KiB
MySQL
Raw Permalink Normal View History

2016-01-10 11:01:49 +01:00
-- LegacyWorlds Beta 5
-- PostgreSQL database scripts
--
-- beta5/structure/01-player-dipl.sql
--
-- Beta 5 games:
-- Data structures that store everything related to a
-- player's diplomatic relations
--
-- Copyright(C) 2004-2007, DeepClone Development
-- --------------------------------------------------------
CREATE TABLE research_assistance (
id BIGSERIAL NOT NULL PRIMARY KEY,
player BIGINT NOT NULL REFERENCES player (id),
price INT NOT NULL CHECK(price >= 0),
offer_to BIGINT NOT NULL REFERENCES player (id),
technology INT REFERENCES research (id),
moment INT NOT NULL DEFAULT INT4(EXTRACT(EPOCH FROM NOW())),
accepted BOOLEAN
);
CREATE INDEX res_as_player ON research_assistance (player);
CREATE INDEX res_as_offer_to ON research_assistance (offer_to);
CREATE INDEX res_as_technology ON research_assistance (technology);
CREATE INDEX res_as_moment ON research_assistance (moment);
GRANT SELECT,INSERT,UPDATE ON research_assistance TO legacyworlds;
GRANT SELECT,UPDATE ON research_assistance_id_seq TO legacyworlds;
CREATE TABLE enemy_alliance (
player BIGINT NOT NULL REFERENCES player (id),
alliance INT NOT NULL REFERENCES alliance (id) ON DELETE CASCADE,
PRIMARY KEY (player, alliance)
);
CREATE INDEX enemy_alliance_idx ON enemy_alliance (alliance);
GRANT SELECT,INSERT,DELETE ON enemy_alliance TO legacyworlds;
CREATE TABLE enemy_player (
player BIGINT NOT NULL REFERENCES player (id),
enemy BIGINT NOT NULL REFERENCES player (id),
PRIMARY KEY (player, enemy)
);
CREATE INDEX enemy_player_idx ON enemy_player (enemy);
GRANT SELECT,INSERT,DELETE ON enemy_player TO legacyworlds;
CREATE TABLE trusted (
player BIGINT NOT NULL REFERENCES player (id),
level SMALLINT NOT NULL CHECK(level >= 0),
friend BIGINT NOT NULL REFERENCES player (id),
PRIMARY KEY (player, level),
UNIQUE (player, level)
);
GRANT SELECT,INSERT,DELETE,UPDATE ON trusted TO legacyworlds;
CREATE TABLE trusted_ban (
player BIGINT NOT NULL REFERENCES player (id),
ban_player BIGINT NOT NULL REFERENCES player (id),
PRIMARY KEY (player, ban_player)
);
CREATE INDEX trusted_ban_idx ON trusted_ban (ban_player);
GRANT SELECT,INSERT,DELETE ON trusted_ban TO legacyworlds;
CREATE TABLE donation_log (
time INT NOT NULL DEFAULT UNIX_TIMESTAMP(NOW()),
source BIGINT NOT NULL REFERENCES player (id),
target BIGINT NOT NULL REFERENCES player (id),
amount INT NOT NULL CHECK(amount > 0),
PRIMARY KEY (time, source)
);
CREATE INDEX donation_source ON donation_log (source);
CREATE INDEX donation_target ON donation_log (target);
GRANT INSERT,SELECT ON donation_log TO legacyworlds;