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 }