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

0001 /*
0002  * SPDX-FileCopyrightText: 2019 David Barchiesi <david@barchie.si>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 #include "teamdrivesearchquery.h"
0008 
0009 #include <QDateTime>
0010 #include <QString>
0011 
0012 using namespace KGAPI2;
0013 using namespace KGAPI2::Drive;
0014 
0015 QString TeamdriveSearchQuery::fieldToString(Field field)
0016 {
0017     switch (field) {
0018     case Name:
0019         return QStringLiteral("name");
0020     case CreatedTime:
0021         return QStringLiteral("createdTime");
0022     case MemberCount:
0023         return QStringLiteral("memberCount");
0024     case OrganizerCount:
0025         return QStringLiteral("organizerCount");
0026     }
0027 
0028     Q_ASSERT(false);
0029     return QString();
0030 }
0031 
0032 QString TeamdriveSearchQuery::valueToString(TeamdriveSearchQuery::Field field, const QVariant &var)
0033 {
0034     switch (field) {
0035     case Name:
0036         return QStringLiteral("'%1'").arg(var.toString().replace(QLatin1Char('\''), QLatin1StringView("\\\'")));
0037     case MemberCount:
0038     case OrganizerCount:
0039         return var.toString();
0040     case CreatedTime:
0041         return QStringLiteral("'%1'").arg(var.toDateTime().toUTC().toString(QStringLiteral("yyyy-MM-ddThh:mm:ss")));
0042     }
0043 
0044     Q_ASSERT(false);
0045     return QString();
0046 }
0047 
0048 void TeamdriveSearchQuery::addQuery(TeamdriveSearchQuery::Field field, TeamdriveSearchQuery::CompareOperator op, const QVariant &value)
0049 {
0050     switch (field) {
0051     case Name:
0052         Q_ASSERT(op == Contains || op == Equals || op == NotEquals);
0053         Q_ASSERT(value.canConvert<QString>());
0054         break;
0055     case MemberCount:
0056     case OrganizerCount:
0057         Q_ASSERT(op == LessOrEqual || op == Less || op == Equals || op == NotEquals || op == Greater || op == GreaterOrEqual);
0058         Q_ASSERT(value.canConvert<int>());
0059         break;
0060     case CreatedTime:
0061         Q_ASSERT(op == LessOrEqual || op == Less || op == Equals || op == NotEquals || op == Greater || op == GreaterOrEqual);
0062         Q_ASSERT(value.canConvert<QDateTime>());
0063         break;
0064     }
0065 
0066     SearchQuery::addQuery(fieldToString(field), op, valueToString(field, value));
0067 }