diff --git a/Telegram/SourceFiles/ayu/database/ayu_database.cpp b/Telegram/SourceFiles/ayu/database/ayu_database.cpp index cd9424b72..8b2dc9926 100644 --- a/Telegram/SourceFiles/ayu/database/ayu_database.cpp +++ b/Telegram/SourceFiles/ayu/database/ayu_database.cpp @@ -10,9 +10,11 @@ #include "entities.h" #include "ayu/libs/sqlite/sqlite_orm.h" +#include "base/unixtime.h" + using namespace sqlite_orm; -auto storage = make_storage("ayugram.db", +auto storage = make_storage("./tdata/ayudata.db", make_table("DeletedMessage", make_column("userId", &DeletedMessage::userId), make_column("dialogId", &DeletedMessage::dialogId), @@ -97,7 +99,41 @@ namespace AyuDatabase void initialize() { - storage.sync_schema(); + // move to `tdata` from legacy version + if (std::filesystem::exists("ayugram.db")) { + try { + std::filesystem::rename("ayugram.db", "./tdata/ayudata.db"); + } + catch (std::filesystem::filesystem_error &e) { + LOG(("Failed to move database: %1").arg(e.what())); + } + } + + try { + storage.sync_schema(); + } + catch (...) { + auto time = base::unixtime::now(); + + LOG(("Failed to sync database schema")); + LOG(("Moving current database just in case")); + + if (std::filesystem::exists("./tdata/ayudata.db")) { + std::filesystem::rename("./tdata/ayudata.db", QString("./tdata/ayudata_%1.db").arg(time).toStdString()); + } + + if (std::filesystem::exists("./tdata/ayudata.db-shm")) { + std::filesystem::rename("./tdata/ayudata.db-shm", + QString("./tdata/ayudata_%1.db-shm").arg(time).toStdString()); + } + + if (std::filesystem::exists("./tdata/ayudata.db-wal")) { + std::filesystem::rename("./tdata/ayudata.db-wal", + QString("./tdata/ayudata_%1.db-wal").arg(time).toStdString()); + } + + storage.sync_schema(); + } storage.begin_transaction(); storage.commit(); diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 312da65aa..9bf40511b 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 312da65aa0c5bea95b39a48f6066d49df7bcf4f9 +Subproject commit 9bf40511b96b0b46311f3d29686846bcf44ade3f