File indexing completed on 2024-05-12 05:22:23

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com>
0003  * SPDX-FileCopyrightText: 2019 David Barchiesi <david@barchie.si>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006  */
0007 
0008 #pragma once
0009 
0010 #include "kgapidrive_export.h"
0011 
0012 #include <QSharedDataPointer>
0013 #include <QVariant>
0014 
0015 namespace KGAPI2
0016 {
0017 namespace Drive
0018 {
0019 
0020 /**
0021  * SearchQuery class should be used as a base class for building file/team search queries.
0022  */
0023 class KGAPIDRIVE_EXPORT SearchQuery
0024 {
0025 public:
0026     enum CompareOperator { Contains, Equals, NotEquals, Less, LessOrEqual, Greater, GreaterOrEqual, In, Has };
0027 
0028     enum LogicOperator { And, Or };
0029 
0030     SearchQuery(LogicOperator op = And);
0031     SearchQuery(const SearchQuery &other);
0032     ~SearchQuery();
0033 
0034     SearchQuery &operator=(const SearchQuery &other);
0035 
0036     void addQuery(const QString &field, CompareOperator op, const QString &value);
0037     void addQuery(const SearchQuery &query);
0038 
0039     [[nodiscard]] bool isEmpty() const;
0040 
0041     [[nodiscard]] QString serialize() const;
0042 
0043 private:
0044     class Private;
0045     QSharedDataPointer<Private> d;
0046 };
0047 }
0048 }