File indexing completed on 2024-05-12 05:11:21
0001 /* 0002 * This file is part of the KDE Akonadi Search Project 0003 * SPDX-FileCopyrightText: 2013 Vishesh Handa <me@vhanda.in> 0004 * SPDX-FileCopyrightText: 2014 Christian Mollekopf <mollekopf@kolabsys.com> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 * 0008 */ 0009 0010 #pragma once 0011 0012 #include "xapiansearchstore.h" 0013 0014 #include <QSet> 0015 0016 namespace Akonadi 0017 { 0018 namespace Search 0019 { 0020 class PIMSearchStore : public XapianSearchStore 0021 { 0022 Q_OBJECT 0023 public: 0024 explicit PIMSearchStore(QObject *parent = nullptr); 0025 0026 QStringList types() override; 0027 0028 protected: 0029 QString findDatabase(const QString &databasePath) const; 0030 0031 Xapian::Query convertTypes(const QStringList &) override 0032 { 0033 return {}; 0034 } 0035 0036 QByteArray idPrefix() override 0037 { 0038 return {"akonadi"}; 0039 } 0040 0041 Xapian::Query constructQuery(const QString &property, const QVariant &value, Term::Comparator com) override; 0042 QUrl constructUrl(const Xapian::docid &docid) override; 0043 0044 QHash<QString, QString> m_prefix; 0045 0046 /* Simple boolean value 0047 * value == true -> search for B<name> 0048 * value == false -> search for BN<name> 0049 */ 0050 QSet<QString> m_boolProperties; 0051 0052 /*Search for a boolean value with appended value in name 0053 * (<name>+<value>) without prefixed B 0054 */ 0055 QSet<QString> m_boolWithValue; 0056 0057 QHash<QString, int> m_valueProperties; 0058 }; 0059 } 0060 }