File indexing completed on 2024-04-28 03:51:42
0001 /* 0002 This file is part of the KDE Baloo project. 0003 SPDX-FileCopyrightText: 2018 Michael Heidelbach <ottwolt@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #ifndef BALOODATABASESANITIZER_H 0009 #define BALOODATABASESANITIZER_H 0010 0011 #include "transaction.h" 0012 0013 namespace Baloo 0014 { 0015 class DatabaseSanitizerImpl; 0016 /** 0017 * \brief Provide methods to show database problems and 0018 * sanitize them. 0019 */ 0020 class BALOO_ENGINE_EXPORT DatabaseSanitizer 0021 { 0022 public: 0023 enum ItemAccessFilterFlags { 0024 IgnoreNone = 0, 0025 IgnoreAvailable = 1, 0026 IgnoreUnavailable = 2, 0027 IgnoreMounted = 8, 0028 IgnoreUnmounted = 0x10, 0029 }; 0030 Q_DECLARE_FLAGS(ItemAccessFilters, ItemAccessFilterFlags) 0031 0032 public: 0033 DatabaseSanitizer(const Database& db, Transaction::TransactionType type); 0034 DatabaseSanitizer(Database* db, Transaction::TransactionType type); 0035 ~DatabaseSanitizer(); 0036 0037 /** 0038 * Print database content to stdout 0039 * 0040 * \p deviceIDs filter by device ids. Negative numbers list everything but... 0041 * with empty \p deviceIDs(default) everything is printed. 0042 * 0043 * \p missingOnly Simulate purging operation. Only inaccessible items are printed. 0044 * 0045 * \p urlFilter Filter result urls. Default is null = Print everything. 0046 */ 0047 void printList(const QVector<qint64>& deviceIds, 0048 const ItemAccessFilters accessFilter = IgnoreNone, 0049 const QSharedPointer<QRegularExpression>& urlFilter = nullptr 0050 ); 0051 /** 0052 * Print info about known devices to stdout 0053 * 0054 * \p deviceIDs filter by device ids. Negative numbers list everything but... 0055 * with empty \p deviceIDs(default) everything is printed. 0056 * 0057 * \p accessFilter filter by accessibility. E.g IgnoreAvailable|IgnoreUnmounted 0058 * prints only mounted devices with inaccessible files. 0059 */ 0060 void printDevices(const QVector<qint64>& deviceIds, const ItemAccessFilters accessFilter = IgnoreNone); 0061 0062 void removeStaleEntries(const QVector<qint64>& deviceIds, 0063 const DatabaseSanitizer::ItemAccessFilters accessFilter = DatabaseSanitizer::IgnoreNone, 0064 const bool dryRun = false, 0065 const QSharedPointer<QRegularExpression>& urlFilter = nullptr 0066 ); 0067 0068 private: 0069 DatabaseSanitizer(const DatabaseSanitizer& rhs) = delete; 0070 DatabaseSanitizerImpl* m_pimpl; 0071 }; 0072 0073 Q_DECLARE_OPERATORS_FOR_FLAGS(DatabaseSanitizer::ItemAccessFilters) 0074 0075 } 0076 #endif // BALOODATABASESANITIZER_H