File indexing completed on 2024-05-12 05:22:18
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 "drivessearchquery.h" 0008 #include "utils.h" 0009 0010 #include <QDateTime> 0011 #include <QString> 0012 0013 using namespace KGAPI2; 0014 using namespace KGAPI2::Drive; 0015 0016 QString DrivesSearchQuery::fieldToString(Field field) 0017 { 0018 switch (field) { 0019 case Name: 0020 return QStringLiteral("name"); 0021 case Hidden: 0022 return QStringLiteral("hidden"); 0023 case CreatedDate: 0024 return QStringLiteral("createdDate"); 0025 case MemberCount: 0026 return QStringLiteral("memberCount"); 0027 case OrganizerCount: 0028 return QStringLiteral("organizerCount"); 0029 } 0030 0031 Q_ASSERT(false); 0032 return QString(); 0033 } 0034 0035 QString DrivesSearchQuery::valueToString(DrivesSearchQuery::Field field, const QVariant &var) 0036 { 0037 switch (field) { 0038 case Name: 0039 return QStringLiteral("'%1'").arg(var.toString().replace(QLatin1Char('\''), QLatin1StringView("\\\'"))); 0040 case Hidden: 0041 return Utils::bool2Str(var.toBool()); 0042 case MemberCount: 0043 case OrganizerCount: 0044 return var.toString(); 0045 case CreatedDate: 0046 return QStringLiteral("'%1'").arg(var.toDateTime().toUTC().toString(QStringLiteral("yyyy-MM-ddThh:mm:ss"))); 0047 } 0048 0049 Q_ASSERT(false); 0050 return QString(); 0051 } 0052 0053 void DrivesSearchQuery::addQuery(DrivesSearchQuery::Field field, DrivesSearchQuery::CompareOperator op, const QVariant &value) 0054 { 0055 switch (field) { 0056 case Name: 0057 Q_ASSERT(op == Contains || op == Equals || op == NotEquals); 0058 Q_ASSERT(value.canConvert<QString>()); 0059 break; 0060 case Hidden: 0061 Q_ASSERT(op == Equals || op == NotEquals); 0062 Q_ASSERT(value.canConvert<bool>()); 0063 break; 0064 case MemberCount: 0065 case OrganizerCount: 0066 Q_ASSERT(op == LessOrEqual || op == Less || op == Equals || op == NotEquals || op == Greater || op == GreaterOrEqual); 0067 Q_ASSERT(value.canConvert<int>()); 0068 break; 0069 case CreatedDate: 0070 Q_ASSERT(op == LessOrEqual || op == Less || op == Equals || op == NotEquals || op == Greater || op == GreaterOrEqual); 0071 Q_ASSERT(value.canConvert<QDateTime>()); 0072 break; 0073 } 0074 0075 SearchQuery::addQuery(fieldToString(field), op, valueToString(field, value)); 0076 }