mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 20:48:52 +03:00
Add delete pending_receipts migration
This commit is contained in:
parent
dad2de7ba2
commit
d6685e8d61
1 changed files with 42 additions and 1 deletions
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
//! Should be changed when a breaking change occurs in the cache format.
|
//! Should be changed when a breaking change occurs in the cache format.
|
||||||
//! This will reset client's data.
|
//! This will reset client's data.
|
||||||
static const std::string CURRENT_CACHE_FORMAT_VERSION("2018.09.21");
|
static const std::string CURRENT_CACHE_FORMAT_VERSION("2020.05.01");
|
||||||
static const std::string SECRET("secret");
|
static const std::string SECRET("secret");
|
||||||
|
|
||||||
static lmdb::val NEXT_BATCH_KEY("next_batch");
|
static lmdb::val NEXT_BATCH_KEY("next_batch");
|
||||||
|
@ -669,6 +669,47 @@ Cache::deleteData()
|
||||||
bool
|
bool
|
||||||
Cache::runMigrations()
|
Cache::runMigrations()
|
||||||
{
|
{
|
||||||
|
auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY);
|
||||||
|
|
||||||
|
lmdb::val current_version;
|
||||||
|
bool res = lmdb::dbi_get(txn, syncStateDb_, CACHE_FORMAT_VERSION_KEY, current_version);
|
||||||
|
|
||||||
|
txn.commit();
|
||||||
|
|
||||||
|
if (!res)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
std::string stored_version(current_version.data(), current_version.size());
|
||||||
|
|
||||||
|
std::vector<std::pair<std::string, std::function<bool()>>> migrations{
|
||||||
|
{"2020.05.01",
|
||||||
|
[this]() {
|
||||||
|
try {
|
||||||
|
auto txn = lmdb::txn::begin(env_, nullptr);
|
||||||
|
auto pending_receipts =
|
||||||
|
lmdb::dbi::open(txn, "pending_receipts", MDB_CREATE);
|
||||||
|
lmdb::dbi_drop(txn, pending_receipts, true);
|
||||||
|
txn.commit();
|
||||||
|
} catch (const lmdb::error &) {
|
||||||
|
nhlog::db()->critical(
|
||||||
|
"Failed to delete pending_receipts database in migration!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
nhlog::db()->info("Successfully deleted pending receipts database.");
|
||||||
|
return true;
|
||||||
|
}},
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const auto &[target_version, migration] : migrations) {
|
||||||
|
if (target_version > stored_version)
|
||||||
|
if (!migration()) {
|
||||||
|
nhlog::db()->critical("migration failure!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setCurrentFormat();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue