Skip to content

Commit

Permalink
Simplify SQLite3 schema types
Browse files Browse the repository at this point in the history
  • Loading branch information
sfan5 committed Feb 18, 2025
1 parent cc352f3 commit f4bdf72
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions src/database/database-sqlite3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -380,14 +380,17 @@ void PlayerDatabaseSQLite3::createDatabase()
{
assert(m_database);

// When designing the schema remember that SQLite only has 5 basic data types
// and ignores length-limited types like "VARCHAR(32)".

SQLOK(sqlite3_exec(m_database,
"CREATE TABLE IF NOT EXISTS `player` ("
"`name` VARCHAR(50) NOT NULL,"
"`pitch` NUMERIC(11, 4) NOT NULL,"
"`yaw` NUMERIC(11, 4) NOT NULL,"
"`posX` NUMERIC(11, 4) NOT NULL,"
"`posY` NUMERIC(11, 4) NOT NULL,"
"`posZ` NUMERIC(11, 4) NOT NULL,"
"`name` TEXT NOT NULL,"
"`pitch` NUMERIC NOT NULL,"
"`yaw` NUMERIC NOT NULL,"
"`posX` NUMERIC NOT NULL,"
"`posY` NUMERIC NOT NULL,"
"`posZ` NUMERIC NOT NULL,"
"`hp` INT NOT NULL,"
"`breath` INT NOT NULL,"
"`creation_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,"
Expand All @@ -398,17 +401,17 @@ void PlayerDatabaseSQLite3::createDatabase()

SQLOK(sqlite3_exec(m_database,
"CREATE TABLE IF NOT EXISTS `player_metadata` ("
" `player` VARCHAR(50) NOT NULL,"
" `metadata` VARCHAR(256) NOT NULL,"
" `value` TEXT,"
" `player` TEXT NOT NULL,"
" `metadata` TEXT NOT NULL,"
" `value` TEXT NOT NULL,"
" PRIMARY KEY(`player`, `metadata`),"
" FOREIGN KEY (`player`) REFERENCES player (`name`) ON DELETE CASCADE );",
NULL, NULL, NULL),
"Failed to create player metadata table");

SQLOK(sqlite3_exec(m_database,
"CREATE TABLE IF NOT EXISTS `player_inventories` ("
" `player` VARCHAR(50) NOT NULL,"
" `player` TEXT NOT NULL,"
" `inv_id` INT NOT NULL,"
" `inv_width` INT NOT NULL,"
" `inv_name` TEXT NOT NULL DEFAULT '',"
Expand All @@ -420,7 +423,7 @@ void PlayerDatabaseSQLite3::createDatabase()

SQLOK(sqlite3_exec(m_database,
"CREATE TABLE `player_inventory_items` ("
" `player` VARCHAR(50) NOT NULL,"
" `player` TEXT NOT NULL,"
" `inv_id` INT NOT NULL,"
" `slot_id` INT NOT NULL,"
" `item` TEXT NOT NULL DEFAULT '',"
Expand Down Expand Up @@ -666,17 +669,17 @@ void AuthDatabaseSQLite3::createDatabase()
SQLOK(sqlite3_exec(m_database,
"CREATE TABLE IF NOT EXISTS `auth` ("
"`id` INTEGER PRIMARY KEY AUTOINCREMENT,"
"`name` VARCHAR(32) UNIQUE,"
"`password` VARCHAR(512),"
"`last_login` INTEGER"
"`name` TEXT UNIQUE NOT NULL,"
"`password` TEXT NOT NULL,"
"`last_login` INTEGER NOT NULL DEFAULT 0"
");",
NULL, NULL, NULL),
"Failed to create auth table");

SQLOK(sqlite3_exec(m_database,
"CREATE TABLE IF NOT EXISTS `user_privileges` ("
"`id` INTEGER,"
"`privilege` VARCHAR(32),"
"`privilege` TEXT,"
"PRIMARY KEY (id, privilege)"
"CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES auth (id) ON DELETE CASCADE"
");",
Expand Down

0 comments on commit f4bdf72

Please sign in to comment.