This commit is contained in:
sfan5 2024-05-17 14:35:42 +02:00 committed by GitHub
commit 470f653a0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 19 additions and 2 deletions

View File

@ -32,6 +32,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <hiredis.h>
#include <cassert>
#if VERSION_MAJOR > 5 || VERSION_MINOR > 9
#define DEPRECATION_PERIOD_OVER
#endif
Database_Redis::Database_Redis(Settings &conf)
{
@ -66,6 +69,14 @@ Database_Redis::Database_Redis(Settings &conf)
}
freeReplyObject(reply);
}
warningstream << "/!\\ You are using the deprecated redis backend. "
#ifdef DEPRECATION_PERIOD_OVER
<< "This backend is only still supported for migrations. /!\\\n"
#else
<< "This backend will become read-only in the next release. /!\\\n"
#endif
<< "Please migrate to SQLite3 or PostgreSQL instead." << std::endl;
}
Database_Redis::~Database_Redis()
@ -73,16 +84,22 @@ Database_Redis::~Database_Redis()
redisFree(ctx);
}
void Database_Redis::beginSave() {
void Database_Redis::beginSave()
{
#ifdef DEPRECATION_PERIOD_OVER
throw DatabaseException("Redis backend is read-only, see deprecation notice.");
#else
redisReply *reply = static_cast<redisReply *>(redisCommand(ctx, "MULTI"));
if (!reply) {
throw DatabaseException(std::string(
"Redis command 'MULTI' failed: ") + ctx->errstr);
}
freeReplyObject(reply);
#endif
}
void Database_Redis::endSave() {
void Database_Redis::endSave()
{
redisReply *reply = static_cast<redisReply *>(redisCommand(ctx, "EXEC"));
if (!reply) {
throw DatabaseException(std::string(