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 }