From bb0b626ceeed54a4260ec9dac1bcf7623226ba61 Mon Sep 17 00:00:00 2001 From: woogerboy21 Date: Sat, 15 Aug 2015 02:56:10 -0400 Subject: [PATCH] Add last_login column to user table and populate upon login --- common/server.cpp | 1 + common/server_database_interface.h | 1 + servatrice/migrations/servatrice_0005_to_0006.sql | 5 +++++ servatrice/servatrice.sql | 3 ++- servatrice/src/servatrice_database_interface.cpp | 11 +++++++++++ servatrice/src/servatrice_database_interface.h | 3 ++- 6 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 servatrice/migrations/servatrice_0005_to_0006.sql diff --git a/common/server.cpp b/common/server.cpp index f8ea1ee4..2fb064bc 100644 --- a/common/server.cpp +++ b/common/server.cpp @@ -179,6 +179,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString databaseInterface->updateUsersClientID(name, clientid); } + databaseInterface->updateUsersLastLoginTime(name); se = Server_ProtocolHandler::prepareSessionEvent(event); sendIsl_SessionEvent(*se); delete se; diff --git a/common/server_database_interface.h b/common/server_database_interface.h index 58a50293..224ae2c7 100644 --- a/common/server_database_interface.h +++ b/common/server_database_interface.h @@ -42,6 +42,7 @@ public: virtual bool registerUser(const QString & /* userName */, const QString & /* realName */, ServerInfo_User_Gender const & /* gender */, const QString & /* password */, const QString & /* emailAddress */, const QString & /* country */, bool /* active = false */) { return false; } virtual bool activateUser(const QString & /* userName */, const QString & /* token */) { return false; } virtual void updateUsersClientID(const QString & /* userName */, const QString & /* userClientID */) { } + virtual void updateUsersLastLoginTime(const QString & /* userName */) { } enum LogMessage_TargetType { MessageTargetRoom, MessageTargetGame, MessageTargetChat, MessageTargetIslRoom }; virtual void logMessage(const int /* senderId */, const QString & /* senderName */, const QString & /* senderIp */, const QString & /* logMessage */, LogMessage_TargetType /* targetType */, const int /* targetId */, const QString & /* targetName */) { }; diff --git a/servatrice/migrations/servatrice_0005_to_0006.sql b/servatrice/migrations/servatrice_0005_to_0006.sql new file mode 100644 index 00000000..3f9552b2 --- /dev/null +++ b/servatrice/migrations/servatrice_0005_to_0006.sql @@ -0,0 +1,5 @@ +-- Servatrice db migration from version 5 to version 6 + +alter table cockatrice_users add last_login datetime not null; + +UPDATE cockatrice_schema_version SET version=6 WHERE version=5; diff --git a/servatrice/servatrice.sql b/servatrice/servatrice.sql index 4ffe8753..27280167 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(5); +INSERT INTO cockatrice_schema_version VALUES(6); CREATE TABLE IF NOT EXISTS `cockatrice_decklist_files` ( `id` int(7) unsigned zerofill NOT NULL auto_increment, @@ -84,6 +84,7 @@ CREATE TABLE IF NOT EXISTS `cockatrice_users` ( `active` tinyint(1) NOT NULL, `token` binary(16) NOT NULL, `clientid` varchar(15) NOT NULL, + `last_login` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `token` (`token`), diff --git a/servatrice/src/servatrice_database_interface.cpp b/servatrice/src/servatrice_database_interface.cpp index 15dee6a2..ae8279fa 100644 --- a/servatrice/src/servatrice_database_interface.cpp +++ b/servatrice/src/servatrice_database_interface.cpp @@ -880,3 +880,14 @@ void Servatrice_DatabaseInterface::updateUsersClientID(const QString &userName, execSqlQuery(query); } + +void Servatrice_DatabaseInterface::updateUsersLastLoginTime(const QString &userName) +{ + if (!checkSql()) + return; + + QSqlQuery *query = prepareQuery("update {prefix}_users set last_login = NOW() where name = :user_name"); + query->bindValue(":user_name", userName); + execSqlQuery(query); + +} diff --git a/servatrice/src/servatrice_database_interface.h b/servatrice/src/servatrice_database_interface.h index 7e05fe8e..d082b2f3 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 5 +#define DATABASE_SCHEMA_VERSION 6 class Servatrice; @@ -73,6 +73,7 @@ public: const QString &password, const QString &emailAddress, const QString &country, QString &token, bool active = false); bool activateUser(const QString &userName, const QString &token); void updateUsersClientID(const QString &userName, const QString &userClientID); + void updateUsersLastLoginTime(const QString &userName); void logMessage(const int senderId, const QString &senderName, const QString &senderIp, const QString &logMessage, LogMessage_TargetType targetType, const int targetId, const QString &targetName); bool changeUserPassword(const QString &user, const QString &oldPassword, const QString &newPassword);