From eb5833609adbb657fe25657a70921ef16049f2dc Mon Sep 17 00:00:00 2001 From: woogerboy21 Date: Tue, 11 Aug 2015 12:45:04 -0400 Subject: [PATCH] Add clientid field to sessions table. --- common/server.cpp | 2 +- common/server_database_interface.h | 2 +- servatrice/migrations/servatrice_0003_to_0004.sql | 5 +++++ servatrice/servatrice.sql | 2 +- servatrice/src/servatrice_database_interface.cpp | 5 +++-- servatrice/src/servatrice_database_interface.h | 4 ++-- 6 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 servatrice/migrations/servatrice_0003_to_0004.sql diff --git a/common/server.cpp b/common/server.cpp index ef1f9400..543a2d1c 100644 --- a/common/server.cpp +++ b/common/server.cpp @@ -150,7 +150,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString users.insert(name, session); qDebug() << "Server::loginUser:" << session << "name=" << name; - data.set_session_id(databaseInterface->startSession(name, session->getAddress())); + data.set_session_id(databaseInterface->startSession(name, session->getAddress(), clientid)); databaseInterface->unlockSessionTables(); usersBySessionId.insert(data.session_id(), session); diff --git a/common/server_database_interface.h b/common/server_database_interface.h index c132cb15..ebd944bc 100644 --- a/common/server_database_interface.h +++ b/common/server_database_interface.h @@ -24,7 +24,7 @@ public: virtual void storeGameInformation(const QString & /* roomName */, const QStringList & /* roomGameTypes */, const ServerInfo_Game & /* gameInfo */, const QSet & /* allPlayersEver */, const QSet & /* allSpectatorsEver */, const QList & /* replayList */) { } virtual DeckList *getDeckFromDatabase(int /* deckId */, int /* userId */) { return 0; } - virtual qint64 startSession(const QString & /* userName */, const QString & /* address */) { return 0; } + virtual qint64 startSession(const QString & /* userName */, const QString & /* address */, const QString & /* clientId */) { return 0; } virtual bool usernameIsValid(const QString & /*userName */, QString & /* error */) { return true; }; public slots: virtual void endSession(qint64 /* sessionId */ ) { } diff --git a/servatrice/migrations/servatrice_0003_to_0004.sql b/servatrice/migrations/servatrice_0003_to_0004.sql new file mode 100644 index 00000000..bbfce750 --- /dev/null +++ b/servatrice/migrations/servatrice_0003_to_0004.sql @@ -0,0 +1,5 @@ +-- Servatrice db migration from version 3 to version 4 + +alter table cockatrice_sessions add clientid varchar(15) not null; + +UPDATE cockatrice_schema_version SET version=4 WHERE version=3; diff --git a/servatrice/servatrice.sql b/servatrice/servatrice.sql index b33f7de5..80d517c4 100644 --- a/servatrice/servatrice.sql +++ b/servatrice/servatrice.sql @@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `cockatrice_schema_version` ( PRIMARY KEY (`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -INSERT INTO cockatrice_schema_version VALUES(3); +INSERT INTO cockatrice_schema_version VALUES(4); CREATE TABLE IF NOT EXISTS `cockatrice_decklist_files` ( `id` int(7) unsigned zerofill NOT NULL auto_increment, diff --git a/servatrice/src/servatrice_database_interface.cpp b/servatrice/src/servatrice_database_interface.cpp index e2b56a51..c48f8d0c 100644 --- a/servatrice/src/servatrice_database_interface.cpp +++ b/servatrice/src/servatrice_database_interface.cpp @@ -536,7 +536,7 @@ bool Servatrice_DatabaseInterface::userSessionExists(const QString &userName) return query->next(); } -qint64 Servatrice_DatabaseInterface::startSession(const QString &userName, const QString &address) +qint64 Servatrice_DatabaseInterface::startSession(const QString &userName, const QString &address, const QString &clientId) { if (server->getAuthenticationMethod() == Servatrice::AuthenticationNone) return -1; @@ -544,10 +544,11 @@ qint64 Servatrice_DatabaseInterface::startSession(const QString &userName, const if (!checkSql()) return -1; - QSqlQuery *query = prepareQuery("insert into {prefix}_sessions (user_name, id_server, ip_address, start_time) values(:user_name, :id_server, :ip_address, NOW())"); + QSqlQuery *query = prepareQuery("insert into {prefix}_sessions (user_name, id_server, ip_address, start_time, clientid) values(:user_name, :id_server, :ip_address, NOW(), :client_id)"); query->bindValue(":user_name", userName); query->bindValue(":id_server", server->getServerId()); query->bindValue(":ip_address", address); + query->bindValue(":client_id", clientId); if (execSqlQuery(query)) return query->lastInsertId().toInt(); return -1; diff --git a/servatrice/src/servatrice_database_interface.h b/servatrice/src/servatrice_database_interface.h index 4c5b376a..89e0dd3e 100644 --- a/servatrice/src/servatrice_database_interface.h +++ b/servatrice/src/servatrice_database_interface.h @@ -9,7 +9,7 @@ #include "server.h" #include "server_database_interface.h" -#define DATABASE_SCHEMA_VERSION 3 +#define DATABASE_SCHEMA_VERSION 4 class Servatrice; @@ -59,7 +59,7 @@ public: int getNextGameId(); int getNextReplayId(); int getActiveUserCount(); - qint64 startSession(const QString &userName, const QString &address); + qint64 startSession(const QString &userName, const QString &address, const QString &clientId); void endSession(qint64 sessionId); void clearSessionTables(); void lockSessionTables();