[network/ruqola] src/core/localdatabase: Remove all files
Laurent Montel <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit d3447dd79d90a943a9cd9177f7049d2b9399db62 by Laurent Montel.
Committed on 16/08/2026 at 13:36.
Pushed by mlaurent into branch 'master'.
Remove all files
M +11 -0 src/core/localdatabase/localdatabasebase.cpp
M +2 -0 src/core/localdatabase/localdatabasebase.h
M +10 -8 src/core/localdatabase/localmessagesdatabase.cpp
https://invent.kde.org/network/ruqola/-/commit/d3447dd79d90a943a9cd9177f7049d2b9399db62
diff --git a/src/core/localdatabase/localdatabasebase.cpp b/src/core/localdatabase/localdatabasebase.cpp
index 7d49aff197..564fadcb7b 100644
--- a/src/core/localdatabase/localdatabasebase.cpp
+++ b/src/core/localdatabase/localdatabasebase.cpp
@@ -35,6 +35,17 @@ QString LocalDatabaseBase::dbFileName(const QString &accountName, const QByteArr
return dbFileName(accountName, QString::fromLatin1(roomId));
}
+QStringList LocalDatabaseBase::allDatabaseFiles(const QString &accountName, const QByteArray &roomId) const
+{
+ const QString dirPath = mBasePath + accountName;
+ const QDir dir(dirPath);
+ if (!dir.exists()) {
+ return {};
+ }
+ const QString baseName = dbFileName(accountName, roomId);
+ return {baseName, baseName + u"-wal"_s, baseName + u"-shm"_s};
+}
+
QString LocalDatabaseBase::dbFileName(const QString &accountName) const
{
const QString dirPath = mBasePath + accountName;
diff --git a/src/core/localdatabase/localdatabasebase.h b/src/core/localdatabase/localdatabasebase.h
index d6c19ce1f7..893714a390 100644
--- a/src/core/localdatabase/localdatabasebase.h
+++ b/src/core/localdatabase/localdatabasebase.h
@@ -39,6 +39,8 @@ public:
// database type. Must be called before the account files are deleted from disk.
static void removeDataBaseConnections(const QString &accountName);
+ [[nodiscard]] QStringList allDatabaseFiles(const QString &accountName, const QByteArray &roomId) const;
+
protected:
[[nodiscard]] virtual QString schemaDataBase() const;
[[nodiscard]] bool initializeDataBase(const QString &accountName, const QByteArray &roomId, QSqlDatabase &db);
diff --git a/src/core/localdatabase/localmessagesdatabase.cpp b/src/core/localdatabase/localmessagesdatabase.cpp
index a96c78bba3..5334dd96dc 100644
--- a/src/core/localdatabase/localmessagesdatabase.cpp
+++ b/src/core/localdatabase/localmessagesdatabase.cpp
@@ -37,15 +37,17 @@ void LocalMessagesDatabase::deleteDatabaseFromRoomId(const QString &accountName,
{
const QString dbName = databaseName(accountName + u'-' + QString::fromLatin1(roomId));
QSqlDatabase::removeDatabase(dbName);
- const QString fileName = dbFileName(accountName, roomId);
- if (!QFileInfo::exists(fileName)) {
- qCWarning(RUQOLA_DATABASE_LOG) << "Filename doesn't exist: " << fileName;
- return;
- } else {
- if (!QFile(fileName).remove()) {
- qCWarning(RUQOLA_DATABASE_LOG) << "Impossible to remove: " << fileName;
+ const QStringList listFiles = allDatabaseFiles(accountName, roomId);
+ for (const auto &fileName : listFiles) {
+ if (!QFileInfo::exists(fileName)) {
+ qCWarning(RUQOLA_DATABASE_LOG) << "Filename doesn't exist: " << fileName;
+ continue;
} else {
- qCDebug(RUQOLA_DATABASE_LOG) << fileName << " was removed";
+ if (!QFile(fileName).remove()) {
+ qCWarning(RUQOLA_DATABASE_LOG) << "Impossible to remove: " << fileName;
+ } else {
+ qCDebug(RUQOLA_DATABASE_LOG) << fileName << " was removed";
+ }
}
}
}