[Server] Move replay code exchange into the database interface (#7839)

createHashForReplay, cmdReplayGetCode, cmdReplaySubmitCode,
cmdReplayDownloadByGameId and cmdGrantReplayAccess still issued their own SQL
through Servatrice_DatabaseInterface. Add checkReplayAccess, getReplayName,
getReplayHashSource, addReplayAccess, getLatestReplayForGame and
grantReplayAccessByName to Server_DatabaseInterface, implement them with the
same statements, bind order and response mapping, and let the commands ask the
injected interface. Hashing and code parsing stay in the handler; the shared
insert is reused by both grant paths.
This commit is contained in:
BruebachL 2026-11-10 12:16:25 +01:00 • committed by GitHub
parent b2e69d3443
commit 03adbd9787
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 181 additions and 103 deletions

View file

@ -162,6 +162,12 @@ public:
ReplayAccessResult getReplayData(int replayId, int userId, QByteArray &data) override;
ReplayWriteResult setReplayDoNotHide(int gameId, int userId, bool doNotHide) override;
ReplayWriteResult deleteReplayAccess(int gameId, int userId) override;
ReplayAccessResult checkReplayAccess(int gameId, int userId) override;
ReplayAccessResult getReplayName(int gameId, QString &replayName) override;
bool getReplayHashSource(int gameId, QByteArray &source) override;
bool addReplayAccess(int gameId, int userId, const QString &replayName) override;
ReplayAccessResult getLatestReplayForGame(int gameId, int &replayId, QByteArray &data) override;
ReplayWriteResult grantReplayAccessByName(int gameId, const QString &userName) override;
/** @brief Deletes all expired share bundles (cascades to their items). */
void cleanupExpiredDeckShares();