From 8839fa3fe24e72e4506e94389663b82ab2292649 Mon Sep 17 00:00:00 2001 From: Treeston Date: Thu, 1 Aug 2019 23:41:45 +0200 Subject: Core/Chat: Custom channel preservation rewrite. Channel data is now loaded at startup, and written to the DB periodically, instead of both things happening in real time. (cherry picked from commit fedf1f557b2aa1cbb0f4bc722b24afb59cc30855) --- src/server/database/Database/Implementation/CharacterDatabase.cpp | 6 +++--- src/server/database/Database/Implementation/CharacterDatabase.h | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src/server/database/Database/Implementation') diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 4bc1dc7b802..ff1c1b3e7e6 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -326,11 +326,11 @@ void CharacterDatabaseConnection::DoPrepareStatements() " ON DUPLICATE KEY UPDATE LogGuid = VALUES (LogGuid), EventType = VALUES (EventType), PlayerGuid = VALUES (PlayerGuid), Flags = VALUES (Flags), Value = VALUES (Value), Timestamp = VALUES (Timestamp)", CONNECTION_ASYNC); // Chat channel handling - PrepareStatement(CHAR_SEL_CHANNEL, "SELECT name, announce, ownership, password, bannedList FROM channels WHERE name = ? AND team = ?", CONNECTION_SYNCH); - PrepareStatement(CHAR_INS_CHANNEL, "INSERT INTO channels(name, team, lastUsed) VALUES (?, ?, UNIX_TIMESTAMP())", CONNECTION_ASYNC); - PrepareStatement(CHAR_UPD_CHANNEL, "UPDATE channels SET announce = ?, ownership = ?, password = ?, bannedList = ?, lastUsed = UNIX_TIMESTAMP() WHERE name = ? AND team = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_UPD_CHANNEL, "INSERT INTO channels (name, team, announce, ownership, password, bannedList, lastUsed) VALUES (?, ?, ?, ?, ?, ?, UNIX_TIMESTAMP()) " + "ON DUPLICATE KEY UPDATE announce=VALUES(announce), ownership=VALUES(ownership), password=VALUES(password), bannedList=VALUES(bannedList), lastUsed=VALUES(lastUsed)", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_CHANNEL_USAGE, "UPDATE channels SET lastUsed = UNIX_TIMESTAMP() WHERE name = ? AND team = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_CHANNEL_OWNERSHIP, "UPDATE channels SET ownership = ? WHERE name LIKE ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_CHANNEL, "DELETE FROM channels WHERE name = ? AND team = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_OLD_CHANNELS, "DELETE FROM channels WHERE ownership = 1 AND lastUsed + ? < UNIX_TIMESTAMP()", CONNECTION_ASYNC); // Equipmentsets diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 1de37e1a2ca..7460f5d8e28 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -257,11 +257,10 @@ enum CharacterDatabaseStatements : uint32 CHAR_SEL_GUILD_ACHIEVEMENT_CRITERIA, CHAR_INS_GUILD_NEWS, - CHAR_SEL_CHANNEL, - CHAR_INS_CHANNEL, CHAR_UPD_CHANNEL, CHAR_UPD_CHANNEL_USAGE, CHAR_UPD_CHANNEL_OWNERSHIP, + CHAR_DEL_CHANNEL, CHAR_DEL_OLD_CHANNELS, CHAR_UPD_EQUIP_SET, -- cgit v1.2.3