diff --git a/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h b/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h index 4000e453d..9887ecd2f 100644 --- a/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h +++ b/libcockatrice_network/libcockatrice/network/server/remote/server_database_interface.h @@ -1,7 +1,12 @@ #ifndef SERVER_DATABASE_INTERFACE_H #define SERVER_DATABASE_INTERFACE_H +#include "libcockatrice/protocol/pb/serverinfo_ban.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_moderator_login.pb.h" #include "libcockatrice/protocol/pb/serverinfo_user.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user_alt.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_user_session.pb.h" +#include "libcockatrice/protocol/pb/serverinfo_warning.pb.h" #include "server.h" #include @@ -98,6 +103,41 @@ public: { return false; } + virtual QList getUserBanHistory(const QString & /* userName */) + { + return {}; + } + virtual QList getUserWarnHistory(const QString & /* userName */) + { + return {}; + } + virtual QList getUserSessions(const QString & /* userName */, int /* limit */) + { + return {}; + } + virtual QList getUserAlts(const QString & /* userName */, + int /* depth */ = 1, + bool /* useEmail */ = true, + bool /* useClientId */ = true, + bool /* useIp */ = true, + int /* sessionMonths */ = 6) + { + return {}; + } + virtual QList getModeratorLastLogins() + { + return {}; + } + /** + * @brief Whether the backing store is reachable, reconnecting when it is not. + * + * Implementations that cannot report readiness are always ready, so callers + * do not have to know which kind of store they hold. + */ + virtual bool checkSql() + { + return true; + } virtual ServerInfo_User getUserData(const QString &name, bool withId = false) = 0; virtual void storeGameInformation(const QString & /* roomName */, const QStringList & /* roomGameTypes */, diff --git a/servatrice/src/servatrice_database_interface.cpp b/servatrice/src/servatrice_database_interface.cpp index 7b5942920..9c67713c0 100644 --- a/servatrice/src/servatrice_database_interface.cpp +++ b/servatrice/src/servatrice_database_interface.cpp @@ -1896,7 +1896,7 @@ void Servatrice_DatabaseInterface::updateUsersLastLoginData(const QString &userN } } -QList Servatrice_DatabaseInterface::getUserBanHistory(const QString userName) +QList Servatrice_DatabaseInterface::getUserBanHistory(const QString &userName) { QList results; ServerInfo_Ban banDetails; @@ -1954,7 +1954,7 @@ bool Servatrice_DatabaseInterface::addWarning(const QString userName, return true; } -QList Servatrice_DatabaseInterface::getUserWarnHistory(const QString userName) +QList Servatrice_DatabaseInterface::getUserWarnHistory(const QString &userName) { QList results; ServerInfo_Warning warnDetails; diff --git a/servatrice/src/servatrice_database_interface.h b/servatrice/src/servatrice_database_interface.h index 2a6e6a966..9cfdcf4f5 100644 --- a/servatrice/src/servatrice_database_interface.h +++ b/servatrice/src/servatrice_database_interface.h @@ -91,7 +91,7 @@ public: const QString &userName, const QString &password); bool openDatabase(); - bool checkSql(); + bool checkSql() override; QSqlQuery *prepareQuery(const QString &queryText); bool execSqlQuery(QSqlQuery *query); const QSqlDatabase &getDatabase() @@ -214,10 +214,10 @@ public: const QString &newPassword, bool newPasswordNeedsHash) override; void setForcePasswordChange(const QString &user, bool force) override; - QList getUserBanHistory(const QString userName); + QList getUserBanHistory(const QString &userName) override; bool addWarning(const QString userName, const QString adminName, const QString warningReason, const QString clientID); - QList getUserWarnHistory(const QString userName); + QList getUserWarnHistory(const QString &userName) override; QList getMessageLogHistory(const QString &user, const QString &ipaddress, const QString &gamename, @@ -231,7 +231,7 @@ public: int offset = 0, const QString &beforeTime = QString(), bool *hasMore = nullptr); - QList getUserSessions(const QString &userName, int limit); + QList getUserSessions(const QString &userName, int limit) override; bool getPrivateChatHistory(int callerId, const QString &callerName, int peerId, @@ -245,8 +245,8 @@ public: bool useEmail = true, bool useClientId = true, bool useIp = true, - int sessionMonths = 6); - QList getModeratorLastLogins(); + int sessionMonths = 6) override; + QList getModeratorLastLogins() override; // Uptime snapshot as recorded by Servatrice::statusUpdate() into the // {prefix}_uptime table. valid is false when no snapshot exists yet. diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index 9678efeb6..1bf9f85f0 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -1857,7 +1857,7 @@ Response::ResponseCode AbstractServerSocketInterface::cmdGetBanHistory(const Com QString userName = nameFromStdString(cmd.user_name()); Response_BanHistory *re = new Response_BanHistory; - QListIterator banIterator(sqlInterface->getUserBanHistory(userName)); + QListIterator banIterator(databaseInterface->getUserBanHistory(userName)); while (banIterator.hasNext()) { re->add_ban_list()->CopyFrom(banIterator.next()); } @@ -1889,7 +1889,7 @@ Response::ResponseCode AbstractServerSocketInterface::cmdGetWarnHistory(const Co QString userName = nameFromStdString(cmd.user_name()); Response_WarnHistory *re = new Response_WarnHistory; - QListIterator warnIterator(sqlInterface->getUserWarnHistory(userName)); + QListIterator warnIterator(databaseInterface->getUserWarnHistory(userName)); while (warnIterator.hasNext()) { re->add_warn_list()->CopyFrom(warnIterator.next()); } @@ -2605,7 +2605,7 @@ Response::ResponseCode AbstractServerSocketInterface::cmdReportStats(const Comma Response::ResponseCode AbstractServerSocketInterface::cmdGetUserSessions(const Command_GetUserSessions &cmd, ResponseContainer &rc) { - if (!sqlInterface->checkSql()) { + if (!databaseInterface->checkSql()) { return Response::RespInternalError; } @@ -2616,7 +2616,7 @@ Response::ResponseCode AbstractServerSocketInterface::cmdGetUserSessions(const C Response_UserSessions *re = new Response_UserSessions; const int limit = qMin(static_cast(cmd.limit()), 500); - const QList sessions = sqlInterface->getUserSessions(userName, limit); + const QList sessions = databaseInterface->getUserSessions(userName, limit); for (const ServerInfo_UserSession &session : sessions) { re->add_sessions()->CopyFrom(session); } @@ -2627,7 +2627,7 @@ Response::ResponseCode AbstractServerSocketInterface::cmdGetUserSessions(const C Response::ResponseCode AbstractServerSocketInterface::cmdGetUserAlts(const Command_GetUserAlts &cmd, ResponseContainer &rc) { - if (!sqlInterface->checkSql()) { + if (!databaseInterface->checkSql()) { return Response::RespInternalError; } @@ -2639,7 +2639,7 @@ Response::ResponseCode AbstractServerSocketInterface::cmdGetUserAlts(const Comma Response_UserAlts *re = new Response_UserAlts; const int depth = cmd.has_depth() ? static_cast(cmd.depth()) : 1; const int sessionMonths = cmd.has_session_months() ? static_cast(cmd.session_months()) : 6; - const QList alts = sqlInterface->getUserAlts( + const QList alts = databaseInterface->getUserAlts( userName, depth, cmd.include_email(), cmd.include_clientid(), cmd.include_ip(), sessionMonths); for (const ServerInfo_UserAlt &alt : alts) { re->add_alts()->CopyFrom(alt); @@ -2651,12 +2651,12 @@ Response::ResponseCode AbstractServerSocketInterface::cmdGetUserAlts(const Comma Response::ResponseCode AbstractServerSocketInterface::cmdGetModeratorLastLogins(const Command_GetModeratorLastLogins &, ResponseContainer &rc) { - if (!sqlInterface->checkSql()) { + if (!databaseInterface->checkSql()) { return Response::RespInternalError; } Response_ModeratorLastLogins *re = new Response_ModeratorLastLogins; - const QList logins = sqlInterface->getModeratorLastLogins(); + const QList logins = databaseInterface->getModeratorLastLogins(); for (const ServerInfo_ModeratorLogin &login : logins) { re->add_logins()->CopyFrom(login); }