aboutsummaryrefslogtreecommitdiff
path: root/sql/schema.sql
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-10-10 15:14:02 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-10-10 15:22:27 -0300
commit46c653293381dcc1188013d3e2c3f7587a199dc4 (patch)
tree0b9776f73d6e2afcd9104cf400dc5e345fcdcbea /sql/schema.sql
parentcc4873e33866ba86561774a7e55449d59367661e (diff)
downloadquerymanager-46c653293381dcc1188013d3e2c3f7587a199dc4.tar.gz
querymanager-46c653293381dcc1188013d3e2c3f7587a199dc4.zip
organize database configs and schema files + compilation guards
Diffstat (limited to 'sql/schema.sql')
-rw-r--r--sql/schema.sql274
1 files changed, 0 insertions, 274 deletions
diff --git a/sql/schema.sql b/sql/schema.sql
deleted file mode 100644
index 677d778..0000000
--- a/sql/schema.sql
+++ /dev/null
@@ -1,274 +0,0 @@
--- Primary Tables
---==============================================================================
-CREATE TABLE IF NOT EXISTS Worlds (
- WorldID INTEGER NOT NULL,
- Name TEXT NOT NULL COLLATE NOCASE,
- Type INTEGER NOT NULL,
- RebootTime INTEGER NOT NULL,
- Host TEXT NOT NULL,
- Port INTEGER NOT NULL,
- MaxPlayers INTEGER NOT NULL,
- PremiumPlayerBuffer INTEGER NOT NULL,
- MaxNewbies INTEGER NOT NULL,
- PremiumNewbieBuffer INTEGER NOT NULL,
- OnlineRecord INTEGER NOT NULL DEFAULT 0,
- OnlineRecordTimestamp INTEGER NOT NULL DEFAULT 0,
- PRIMARY KEY (WorldID),
- UNIQUE (Name)
-);
-
-CREATE TABLE IF NOT EXISTS Accounts (
- AccountID INTEGER NOT NULL,
- Email TEXT NOT NULL COLLATE NOCASE,
- Auth BLOB NOT NULL,
- PremiumEnd INTEGER NOT NULL DEFAULT 0,
- PendingPremiumDays INTEGER NOT NULL DEFAULT 0,
- Deleted INTEGER NOT NULL DEFAULT 0,
- PRIMARY KEY (AccountID),
- UNIQUE (Email)
-);
-
-CREATE TABLE IF NOT EXISTS Characters (
- WorldID INTEGER NOT NULL,
- CharacterID INTEGER NOT NULL,
- AccountID INTEGER NOT NULL,
- Name TEXT NOT NULL COLLATE NOCASE,
- Sex INTEGER NOT NULL,
- Guild TEXT NOT NULL COLLATE NOCASE DEFAULT '',
- Rank TEXT NOT NULL COLLATE NOCASE DEFAULT '',
- Title TEXT NOT NULL COLLATE NOCASE DEFAULT '',
- Level INTEGER NOT NULL DEFAULT 0,
- Profession TEXT NOT NULL DEFAULT '',
- Residence TEXT NOT NULL DEFAULT '',
- LastLoginTime INTEGER NOT NULL DEFAULT 0,
- TutorActivities INTEGER NOT NULL DEFAULT 0,
- IsOnline INTEGER NOT NULL DEFAULT 0,
- Deleted INTEGER NOT NULL DEFAULT 0,
- PRIMARY KEY (CharacterID),
- UNIQUE (Name)
-);
-CREATE INDEX IF NOT EXISTS CharactersWorldIndex
- ON Characters(WorldID, IsOnline);
-CREATE INDEX IF NOT EXISTS CharactersAccountIndex
- ON Characters(AccountID, IsOnline);
-CREATE INDEX IF NOT EXISTS CharactersGuildIndex
- ON Characters(Guild, Rank);
-
-/*
--- TODO(fusion): Have group rights instead of adding individual rights to characters?
-ALTER TABLE Characters ADD GroupID INTEGER NOT NULL;
-CREATE TABLE IF NOT EXISTS CharacterRights (
- GroupID INTEGER NOT NULL,
- Right TEXT NOT NULL COLLATE NOCASE,
- PRIMARY KEY(GroupID, Right)
-);
-*/
-
-CREATE TABLE IF NOT EXISTS CharacterRights (
- CharacterID INTEGER NOT NULL,
- Right TEXT NOT NULL COLLATE NOCASE,
- PRIMARY KEY(CharacterID, Right)
-);
-
-CREATE TABLE IF NOT EXISTS CharacterDeaths (
- CharacterID INTEGER NOT NULL,
- Level INTEGER NOT NULL,
- OffenderID INTEGER NOT NULL,
- Remark TEXT NOT NULL,
- Unjustified INTEGER NOT NULL,
- Timestamp INTEGER NOT NULL
-);
-CREATE INDEX IF NOT EXISTS CharacterDeathsCharacterIndex
- ON CharacterDeaths(CharacterID, Level);
-CREATE INDEX IF NOT EXISTS CharacterDeathsOffenderIndex
- ON CharacterDeaths(OffenderID, Unjustified);
-
-CREATE TABLE IF NOT EXISTS Buddies (
- WorldID INTEGER NOT NULL,
- AccountID INTEGER NOT NULL,
- BuddyID INTEGER NOT NULL,
- PRIMARY KEY (WorldID, AccountID, BuddyID)
-);
-
-CREATE TABLE IF NOT EXISTS WorldInvitations (
- WorldID INTEGER NOT NULL,
- CharacterID INTEGER NOT NULL,
- PRIMARY KEY (WorldID, CharacterID)
-);
-
-CREATE TABLE IF NOT EXISTS LoginAttempts (
- AccountID INTEGER NOT NULL,
- IPAddress INTEGER NOT NULL,
- Timestamp INTEGER NOT NULL,
- Failed INTEGER NOT NULL
-);
-CREATE INDEX IF NOT EXISTS LoginAttemptsAccountIndex
- ON LoginAttempts(AccountID, Timestamp);
-CREATE INDEX IF NOT EXISTS LoginAttemptsAddressIndex
- ON LoginAttempts(IPAddress, Timestamp);
-
--- House Tables
---==============================================================================
-CREATE TABLE IF NOT EXISTS Houses (
- WorldID INTEGER NOT NULL,
- HouseID INTEGER NOT NULL,
- Name TEXT NOT NULL,
- Rent INTEGER NOT NULL,
- Description TEXT NOT NULL,
- Size INTEGER NOT NULL,
- PositionX INTEGER NOT NULL,
- PositionY INTEGER NOT NULL,
- PositionZ INTEGER NOT NULL,
- Town TEXT NOT NULL,
- GuildHouse INTEGER NOT NULL,
- PRIMARY KEY (WorldID, HouseID)
-);
-
-CREATE TABLE IF NOT EXISTS HouseOwners (
- WorldID INTEGER NOT NULL,
- HouseID INTEGER NOT NULL,
- OwnerID INTEGER NOT NULL,
- PaidUntil INTEGER NOT NULL,
- PRIMARY KEY (WorldID, HouseID)
-);
-
--- NOTE(fusion): An auction would have a non null `FinishTime` but it doesn't make
--- sense to finish an auction just to restart it afterwards so it should only be
--- set after the first bid, along with `BidderID` and `BidAmount`.
-CREATE TABLE IF NOT EXISTS HouseAuctions (
- WorldID INTEGER NOT NULL,
- HouseID INTEGER NOT NULL,
- BidderID INTEGER DEFAULT NULL,
- BidAmount INTEGER DEFAULT NULL,
- FinishTime INTEGER DEFAULT NULL,
- PRIMARY KEY (WorldID, HouseID)
-);
-
-CREATE TABLE IF NOT EXISTS HouseTransfers (
- WorldID INTEGER NOT NULL,
- HouseID INTEGER NOT NULL,
- NewOwnerID INTEGER NOT NULL,
- Price INTEGER NOT NULL,
- PRIMARY KEY (WorldID, HouseID)
-);
-
-CREATE TABLE IF NOT EXISTS HouseAuctionExclusions (
- CharacterID INTEGER NOT NULL,
- Issued INTEGER NOT NULL,
- Until INTEGER NOT NULL,
- BanishmentID INTEGER NOT NULL
-);
-CREATE INDEX IF NOT EXISTS HouseAuctionExclusionsIndex
- ON HouseAuctionExclusions(CharacterID, Until);
-
-CREATE TABLE IF NOT EXISTS HouseAssignments (
- WorldID INTEGER NOT NULL,
- HouseID INTEGER NOT NULL,
- OwnerID INTEGER NOT NULL,
- Price INTEGER NOT NULL,
- Timestamp INTEGER NOT NULL
-);
-CREATE INDEX IF NOT EXISTS HouseAssignmentsHouseIndex
- ON HouseAssignments(WorldID, HouseID);
-CREATE INDEX IF NOT EXISTS HouseAssignmentsTimeIndex
- ON HouseAssignments(WorldID, Timestamp);
-CREATE INDEX IF NOT EXISTS HouseAssignmentsOwnerIndex
- ON HouseAssignments(OwnerID);
-
--- Banishment Tables
---==============================================================================
-CREATE TABLE IF NOT EXISTS Banishments (
- BanishmentID INTEGER NOT NULL,
- AccountID INTEGER NOT NULL,
- IPAddress INTEGER NOT NULL,
- GamemasterID INTEGER NOT NULL,
- Reason TEXT NOT NULL,
- Comment TEXT NOT NULL,
- FinalWarning INTEGER NOT NULL,
- Issued INTEGER NOT NULL,
- Until INTEGER NOT NULL,
- PRIMARY KEY (BanishmentID)
-);
-CREATE INDEX IF NOT EXISTS BanishmentsAccountIndex
- ON Banishments(AccountID, Until, FinalWarning);
-
-CREATE TABLE IF NOT EXISTS IPBanishments (
- CharacterID INTEGER NOT NULL,
- IPAddress INTEGER NOT NULL,
- GamemasterID INTEGER NOT NULL,
- Reason TEXT NOT NULL,
- Comment TEXT NOT NULL,
- Issued INTEGER NOT NULL,
- Until INTEGER NOT NULL
-);
-CREATE INDEX IF NOT EXISTS IPBanishmentsAddressIndex
- ON IPBanishments(IPAddress);
-CREATE INDEX IF NOT EXISTS IPBanishmentsCharacterIndex
- ON IPBanishments(CharacterID);
-
-CREATE TABLE IF NOT EXISTS Namelocks (
- CharacterID INTEGER NOT NULL,
- IPAddress INTEGER NOT NULL,
- GamemasterID INTEGER NOT NULL,
- Reason TEXT NOT NULL,
- Comment TEXT NOT NULL,
- Attempts INTEGER NOT NULL DEFAULT 0,
- Approved INTEGER NOT NULL DEFAULT 0,
- PRIMARY KEY (CharacterID)
-);
-
-CREATE TABLE IF NOT EXISTS Notations (
- CharacterID INTEGER NOT NULL,
- IPAddress INTEGER NOT NULL,
- GamemasterID INTEGER NOT NULL,
- Reason TEXT NOT NULL,
- Comment TEXT NOT NULL
-);
-CREATE INDEX IF NOT EXISTS NotationsCharacterIndex
- ON Notations(CharacterID);
-
-CREATE TABLE IF NOT EXISTS Statements (
- WorldID INTEGER NOT NULL,
- Timestamp INTEGER NOT NULL,
- StatementID INTEGER NOT NULL,
- CharacterID INTEGER NOT NULL,
- Channel TEXT NOT NULL,
- Text TEXT NOT NULL,
- PRIMARY KEY (WorldID, Timestamp, StatementID)
-);
-CREATE INDEX IF NOT EXISTS StatementsCharacterIndex
- ON Statements(CharacterID, Timestamp);
-
-CREATE TABLE IF NOT EXISTS ReportedStatements (
- WorldID INTEGER NOT NULL,
- Timestamp INTEGER NOT NULL,
- StatementID INTEGER NOT NULL,
- CharacterID INTEGER NOT NULL,
- BanishmentID INTEGER NOT NULL,
- ReporterID INTEGER NOT NULL,
- Reason TEXT NOT NULL,
- Comment TEXT NOT NULL,
- PRIMARY KEY (WorldID, Timestamp, StatementID)
-);
-CREATE INDEX IF NOT EXISTS ReportedStatementsCharacterIndex
- ON ReportedStatements(CharacterID, Timestamp);
-CREATE INDEX IF NOT EXISTS ReportedStatementsBanishmentIndex
- ON ReportedStatements(BanishmentID);
-
--- Info Tables
---==============================================================================
-CREATE TABLE IF NOT EXISTS KillStatistics (
- WorldID INTEGER NOT NULL,
- RaceName TEXT NOT NULL COLLATE NOCASE,
- TimesKilled INTEGER NOT NULL,
- PlayersKilled INTEGER NOT NULL,
- PRIMARY KEY (WorldID, RaceName)
-);
-
-CREATE TABLE IF NOT EXISTS OnlineCharacters (
- WorldID INTEGER NOT NULL,
- Name TEXT NOT NULL COLLATE NOCASE,
- Level INTEGER NOT NULL,
- Profession TEXT NOT NULL,
- PRIMARY KEY (WorldID, Name)
-);