From a613c53609185c436dcdca7eae3221b792ad523d Mon Sep 17 00:00:00 2001 From: Andreas Habel Date: Mon, 15 Sep 2008 10:43:11 +0000 Subject: * Added doxygen file, docu will be generated under docs/api/html * Added table definition "tmw_world_states" to store map and world-specific variables * Extended DALStorage to set and get those new variables * Applied Kess's diff file from mantis #424 with modifications for PostgreSQL support --- src/account-server/dalstoragesql.hpp | 269 +++++++++++++++++++---------------- 1 file changed, 148 insertions(+), 121 deletions(-) (limited to 'src/account-server/dalstoragesql.hpp') diff --git a/src/account-server/dalstoragesql.hpp b/src/account-server/dalstoragesql.hpp index 311546ec..b773770f 100644 --- a/src/account-server/dalstoragesql.hpp +++ b/src/account-server/dalstoragesql.hpp @@ -70,33 +70,37 @@ static char const *SQL_ACCOUNTS_TABLE = "CREATE TABLE tmw_accounts \n " "( \n" #if defined (MYSQL_SUPPORT) - "id INTEGER PRIMARY KEY AUTO_INCREMENT," - "username VARCHAR(32) NOT NULL UNIQUE," - "password VARCHAR(32) NOT NULL," - "email VARCHAR(64) NOT NULL," - "level TINYINT UNSIGNED NOT NULL," - "banned TINYINT UNSIGNED NOT NULL," -// "activation VARCHAR(32)," + "id INTEGER PRIMARY KEY AUTO_INCREMENT," + "username VARCHAR(32) NOT NULL UNIQUE," + "password VARCHAR(32) NOT NULL," + "email VARCHAR(64) NOT NULL," + "level TINYINT UNSIGNED NOT NULL," + "banned TINYINT UNSIGNED NOT NULL," + "registration INTEGER NOT NULL," + "lastlogin INTEGER NOT NULL," +// "activation VARCHAR(32)," "INDEX (id)" #error "Incorrect definition. Please fix the types." #elif defined (SQLITE_SUPPORT) - "id INTEGER PRIMARY KEY, \n" - "username TEXT NOT NULL UNIQUE, \n" - "password TEXT NOT NULL, \n" - "email TEXT NOT NULL, \n" - "level INTEGER NOT NULL, \n" - "banned INTEGER NOT NULL, \n" - "registration INTEGER NOT NULL, \n" - "lastlogin INTEGER NOT NULL \n" -// "activation TEXT" + "id INTEGER PRIMARY KEY, \n" + "username TEXT NOT NULL UNIQUE, \n" + "password TEXT NOT NULL, \n" + "email TEXT NOT NULL, \n" + "level INTEGER NOT NULL, \n" + "banned INTEGER NOT NULL, \n" + "registration INTEGER NOT NULL, \n" + "lastlogin INTEGER NOT NULL \n" +// "activation TEXT" #elif defined (POSTGRESQL_SUPPORT) - "id SERIAL PRIMARY KEY," - "username TEXT NOT NULL UNIQUE," - "password TEXT NOT NULL," - "email TEXT NOT NULL," - "level INTEGER NOT NULL," - "banned INTEGER NOT NULL," -// "activation TEXT" + "id SERIAL PRIMARY KEY," + "username TEXT NOT NULL UNIQUE," + "password TEXT NOT NULL," + "email TEXT NOT NULL," + "level SMALLINT NOT NULL," + "banned SMALLINT NOT NULL," + "registration INTEGER NOT NULL," + "lastlogin INTEGER NOT NULL" +// "activation TEXT" #endif ");"; @@ -109,9 +113,9 @@ static char const *CHARACTERS_TBL_NAME = "tmw_characters"; static char const *SQL_CHARACTERS_TABLE = "CREATE TABLE tmw_characters (" #if defined (MYSQL_SUPPORT) - "id INTEGER PRIMARY KEY AUTO_INCREMENT," - "user_id INTEGER UNSIGNED NOT NULL," - "name VARCHAR(32) NOT NULL UNIQUE," + "id INTEGER PRIMARY KEY AUTO_INCREMENT," + "user_id INTEGER UNSIGNED NOT NULL," + "name VARCHAR(32) NOT NULL UNIQUE," // general information about the character "gender TINYINT UNSIGNED NOT NULL," "hair_style TINYINT UNSIGNED NOT NULL," @@ -119,39 +123,38 @@ static char const *SQL_CHARACTERS_TABLE = "level INTEGER UNSIGNED NOT NULL," "char_pts INTEGER UNSIGNED NOT NULL," "correct_pts INTEGER UNSIGNED NOT NULL," - "money INTEGER UNSIGNED NOT NULL," + "money INTEGER UNSIGNED NOT NULL," // location on the map - "x SMALLINT UNSIGNED NOT NULL," - "y SMALLINT UNSIGNED NOT NULL," - "map_id TINYINT NOT NULL," + "x SMALLINT UNSIGNED NOT NULL," + "y SMALLINT UNSIGNED NOT NULL," + "map_id TINYINT NOT NULL," // attributes - "str SMALLINT UNSIGNED NOT NULL," - "agi SMALLINT UNSIGNED NOT NULL," - "dex SMALLINT UNSIGNED NOT NULL," - "vit SMALLINT UNSIGNED NOT NULL," + "str SMALLINT UNSIGNED NOT NULL," + "agi SMALLINT UNSIGNED NOT NULL," + "dex SMALLINT UNSIGNED NOT NULL," + "vit SMALLINT UNSIGNED NOT NULL," // note: int must be backquoted as it's a MySQL keyword - "`int` SMALLINT UNSIGNED NOT NULL," - "will SMALLINT UNSIGNED NOT NULL," + "`int` SMALLINT UNSIGNED NOT NULL," + "will SMALLINT UNSIGNED NOT NULL," //skill experience - "unarmedExp INTEGER UNSIGNED NOT NULL," - "knife_exp INTEGER UNSIGNED NOT NULL," - "sword_exp INTEGER UNSIGNED NOT NULL," - "polearm_exp INTEGER UNSIGNED NOT NULL," - "staff_exp INTEGER UNSIGNED NOT NULL," - "whip_exp INTEGER UNSIGNED NOT NULL," - "bow_exp INTEGER UNSIGNED NOT NULL," - "shoot_exp INTEGER UNSIGNED NOT NULL," - "mace_exp INTEGER UNSIGNED NOT NULL," - "axe_exp INTEGER UNSIGNED NOT NULL," - "thrown_exp INTEGER UNSIGNED NOT NULL," - + "unarmedExp INTEGER UNSIGNED NOT NULL," + "knife_exp INTEGER UNSIGNED NOT NULL," + "sword_exp INTEGER UNSIGNED NOT NULL," + "polearm_exp INTEGER UNSIGNED NOT NULL," + "staff_exp INTEGER UNSIGNED NOT NULL," + "whip_exp INTEGER UNSIGNED NOT NULL," + "bow_exp INTEGER UNSIGNED NOT NULL," + "shoot_exp INTEGER UNSIGNED NOT NULL," + "mace_exp INTEGER UNSIGNED NOT NULL," + "axe_exp INTEGER UNSIGNED NOT NULL," + "thrown_exp INTEGER UNSIGNED NOT NULL," "FOREIGN KEY (user_id) REFERENCES tmw_accounts(id)," "FOREIGN KEY (map_id) REFERENCES tmw_maps(id)," "INDEX (id)" #elif defined (SQLITE_SUPPORT) - "id INTEGER PRIMARY KEY," - "user_id INTEGER NOT NULL," - "name TEXT NOT NULL UNIQUE," + "id INTEGER PRIMARY KEY," + "user_id INTEGER NOT NULL," + "name TEXT NOT NULL UNIQUE," // general information about the character "gender INTEGER NOT NULL," "hair_style INTEGER NOT NULL," @@ -159,68 +162,67 @@ static char const *SQL_CHARACTERS_TABLE = "level INTEGER NOT NULL," "char_pts INTEGER NOT NULL," "correct_pts INTEGER NOT NULL," - "money INTEGER NOT NULL," + "money INTEGER NOT NULL," // location on the map - "x INTEGER NOT NULL," - "y INTEGER NOT NULL," - "map_id INTEGER NOT NULL," + "x INTEGER NOT NULL," + "y INTEGER NOT NULL," + "map_id INTEGER NOT NULL," // attributes - "str INTEGER NOT NULL," - "agi INTEGER NOT NULL," - "dex INTEGER NOT NULL," - "vit INTEGER NOT NULL," - "int INTEGER NOT NULL," - "will INTEGER NOT NULL," + "str INTEGER NOT NULL," + "agi INTEGER NOT NULL," + "dex INTEGER NOT NULL," + "vit INTEGER NOT NULL," + "int INTEGER NOT NULL," + "will INTEGER NOT NULL," //skill experience - "unarmed_exp INTEGER NOT NULL," - "knife_exp INTEGER NOT NULL," - "sword_exp INTEGER NOT NULL," - "polearm_exp INTEGER NOT NULL," - "staff_exp INTEGER NOT NULL," - "whip_exp INTEGER NOT NULL," - "bow_exp INTEGER NOT NULL," - "shoot_exp INTEGER NOT NULL," - "mace_exp INTEGER NOT NULL," - "axe_exp INTEGER NOT NULL," - "thrown_exp INTEGER NOT NULL," + "unarmed_exp INTEGER NOT NULL," + "knife_exp INTEGER NOT NULL," + "sword_exp INTEGER NOT NULL," + "polearm_exp INTEGER NOT NULL," + "staff_exp INTEGER NOT NULL," + "whip_exp INTEGER NOT NULL," + "bow_exp INTEGER NOT NULL," + "shoot_exp INTEGER NOT NULL," + "mace_exp INTEGER NOT NULL," + "axe_exp INTEGER NOT NULL," + "thrown_exp INTEGER NOT NULL," "FOREIGN KEY (user_id) REFERENCES tmw_accounts(id)," "FOREIGN KEY (map_id) REFERENCES tmw_maps(id)" #elif defined (POSTGRESQL_SUPPORT) - "id SERIAL PRIMARY KEY," - "user_id INTEGER NOT NULL," - "name TEXT NOT NULL UNIQUE," + "id SERIAL PRIMARY KEY," + "user_id INTEGER NOT NULL," + "name TEXT NOT NULL UNIQUE," // general information about the character - "gender INTEGER NOT NULL," - "hair_style INTEGER NOT NULL," + "gender SMALLINT NOT NULL," + "hair_style SMALLINT NOT NULL," "hair_color INTEGER NOT NULL," - "level INTEGER NOT NULL," - - "char_pts INTEGER NOT NULL," - "correct_pts INTEGER NOT NULL," - "money INTEGER NOT NULL," + "level INTEGER NOT NULL," + "char_pts INTEGER NOT NULL," + "correct_pts INTEGER NOT NULL," + "money INTEGER NOT NULL," // location on the map - "x INTEGER NOT NULL," - "y INTEGER NOT NULL," - "map_id INTEGER NOT NULL," + "x SMALLINT NOT NULL," + "y SMALLINT NOT NULL," + "map_id SMALLINT NOT NULL," // attributes - "str INTEGER NOT NULL," - "agi INTEGER NOT NULL," - "dex INTEGER NOT NULL," - "vit INTEGER NOT NULL," - "int INTEGER NOT NULL," - "will INTEGER NOT NULL," + "str SMALLINT NOT NULL," + "agi SMALLINT NOT NULL," + "dex SMALLINT NOT NULL," + "vit SMALLINT NOT NULL," + "int SMALLINT NOT NULL," + "will SMALLINT NOT NULL," //skill experience - "unarmed_exp INTEGER NOT NULL," - "knife_exp INTEGER NOT NULL," - "sword_exp INTEGER NOT NULL," - "polearm_exp INTEGER NOT NULL," - "staff_exp INTEGER NOT NULL," - "whip_exp INTEGER NOT NULL," - "bow_exp INTEGER NOT NULL," - "shoot_exp INTEGER NOT NULL," - "mace_exp INTEGER NOT NULL," - "axe_exp INTEGER NOT NULL," - "thrown_exp INTEGER NOT NULL," + "unarmed_exp INTEGER NOT NULL," + "knife_exp INTEGER NOT NULL," + "sword_exp INTEGER NOT NULL," + "polearm_exp INTEGER NOT NULL," + "staff_exp INTEGER NOT NULL," + "whip_exp INTEGER NOT NULL," + "bow_exp INTEGER NOT NULL," + "shoot_exp INTEGER NOT NULL," + "mace_exp INTEGER NOT NULL," + "axe_exp INTEGER NOT NULL," + "thrown_exp INTEGER NOT NULL," "FOREIGN KEY (user_id) REFERENCES tmw_accounts(id)," "FOREIGN KEY (map_id) REFERENCES tmw_maps(id)" #endif @@ -249,11 +251,11 @@ static char const *SQL_INVENTORIES_TABLE = "amount INTEGER NOT NULL," "FOREIGN KEY (owner_id) REFERENCES tmw_characters(id)" #elif defined (POSTGRESQL_SUPPORT) - "id SERIAL PRIMARY KEY," + "id SERIAL PRIMARY KEY," "owner_id INTEGER NOT NULL," - "slot INTEGER NOT NULL," + "slot SMALLINT NOT NULL," "class_id INTEGER NOT NULL," - "amount INTEGER NOT NULL," + "amount SMALLINT NOT NULL," "FOREIGN KEY (owner_id) REFERENCES tmw_characters(id)" #endif ");"; @@ -266,14 +268,14 @@ static char const *GUILDS_TBL_NAME = "tmw_guilds"; static char const *SQL_GUILDS_TABLE = "CREATE TABLE tmw_guilds (" #if defined (MYSQL_SUPPORT) - "id INTEGER PRIMARY KEY AUTO_INCREMENT," - "name VARCHAR(32) NOT NULL UNIQUE" + "id INTEGER PRIMARY KEY AUTO_INCREMENT," + "name VARCHAR(32) NOT NULL UNIQUE" #elif defined (SQLITE_SUPPORT) - "id INTEGER PRIMARY KEY," - "name TEXT NOT NULL UNIQUE" + "id INTEGER PRIMARY KEY," + "name TEXT NOT NULL UNIQUE" #elif defined (POSTGRESQL_SUPPORT) - "id SERIAL PRIMARY KEY," - "name TEXT NOT NULL UNIQUE" + "id SERIAL PRIMARY KEY," + "name TEXT NOT NULL UNIQUE" #endif ");"; @@ -285,21 +287,21 @@ static char const *GUILD_MEMBERS_TBL_NAME = "tmw_guild_members"; static char const *SQL_GUILD_MEMBERS_TABLE = "CREATE TABLE tmw_guild_members (" #if defined (MYSQL_SUPPORT) - "guild_id INTEGER NOT NULL," - "member_id INTEGER NOT NULL," - "rights INTEGER NOT NULL," + "guild_id INTEGER NOT NULL," + "member_id INTEGER NOT NULL," + "rights INTEGER NOT NULL," "FOREIGN KEY (guild_id) REFERENCES tmw_guilds(id)," "FOREIGN KEY (member_id) REFERENCES tmw_characters(id)" #elif defined (SQLITE_SUPPORT) - "guild_id INTEGER NOT NULL," - "member_id INTEGER NOT NULL," - "rights INTEGER NOT NULL," + "guild_id INTEGER NOT NULL," + "member_id INTEGER NOT NULL," + "rights INTEGER NOT NULL," "FOREIGN KEY (guild_id) REFERENCES tmw_guilds(id)," "FOREIGN KEY (member_id) REFERENCES tmw_characters(id)" #elif defined (POSTGRESQL_SUPPORT) - "guild_id INTEGER NOT NULL," - "member_id INTEGER NOT NULL," - "rights INTEGER NOT NULL," + "guild_id INTEGER NOT NULL," + "member_id INTEGER NOT NULL," + "rights INTEGER NOT NULL," "FOREIGN KEY (guild_id) REFERENCES tmw_guilds(id)," "FOREIGN KEY (member_id) REFERENCES tmw_characters(id)" #endif @@ -319,7 +321,32 @@ static char const *SQL_QUESTS_TABLE = "value TEXT NOT NULL," "FOREIGN KEY (owner_id) REFERENCES tmw_characters(id)" #elif defined (POSTGRESQL_SUPPORT) -#error "Missing definition. Please fill the blanks." + "owner_id INTEGER NOT NULL," + "name TEXT NOT NULL," + "value TEXT NOT NULL," + "FOREIGN KEY (owner_id) REFERENCES tmw_characters(id)" +#endif + ");"; + +/** + * TABLE: tmw_world_states + */ +static char const *WORLD_STATES_TBL_NAME = "tmw_world_states"; +static char const *SQL_WORLD_STATES_TABLE = + "CREATE TABLE tmw_world_states \n" + "( \n" +#if defined (MYSQL_SUPPORT) + "state_name VARCHAR(100) NOT NULL, \n" + "map_id SMALLINT UNSIGNED NULL, \n" + "value VARCHAR(255) NULL, \n" + "moddate INT UNSIGNED NOT NULL, \n" + "PRIMARY KEY(state_name) \n" +#elif defined (SQLITE_SUPPORT) + "state_name TEXT PRIMARY KEY, \n" + "map_id INTEGER NULL, \n" + "value TEXT NULL, \n" + "moddate INTEGER NOT NULL \n" +#elif defined (POSTGRESQL_SUPPORT) #endif ");"; -- cgit v1.2.3-70-g09d2