Akonadi
8 #include "searchhelper.h"
11 #include "storage/countquerybuilder.h"
13 #include <private/protocol_p.h>
15 using namespace Akonadi::Server;
17 static qint64 parentCollectionId(qint64 collectionId)
19 QueryBuilder qb(Collection::tableName(), QueryBuilder::Select);
20 qb.addColumn(Collection::parentIdColumn());
21 qb.addValueCondition(Collection::idColumn(), Query::Equals, collectionId);
25 if (!qb.query().next()) {
28 const auto parentId = qb.query().value(0).toLongLong();
36 QueryBuilder qb(Collection::tableName(), QueryBuilder::Select);
38 qb.addColumn(Collection::idFullColumnName());
39 qb.addColumn(Collection::parentIdFullColumnName());
41 CollectionMimeTypeRelation::tableName(),
42 CollectionMimeTypeRelation::leftFullColumnName(),
43 Collection::idFullColumnName());
44 qb.addJoin(
QueryBuilder::LeftJoin, MimeType::tableName(), CollectionMimeTypeRelation::rightFullColumnName(), MimeType::idFullColumnName());
46 for (
const QString &mt : mimeTypes) {
47 cond.addValueCondition(MimeType::nameFullColumnName(), Query::Equals, mt);
49 if (!cond.isEmpty()) {
50 qb.addCondition(cond);
54 qCWarning(AKONADISERVER_LOG) <<
"Failed to query search collections";
59 while (qb.query().next()) {
60 candidateCollections[qb.query().value(1).toLongLong()].
append(qb.query().value(0).toLongLong());
68 for (
const QVector<qint64> &res : std::as_const(candidateCollections)) {
75 for (qint64 ancestor : ancestors) {
82 for (
auto iter = candidateCollections.begin(), iterEnd = candidateCollections.end(); iter != iterEnd; ++iter) {
84 qint64 parentId = iter.
key();
85 while (!ancestors.contains(parentId) && parentId > 0) {
86 parentId = parentCollectionId(parentId);
90 results += iter.
value();
bool isEmpty() const const
void append(const T &value)
@ LeftJoin
NOTE: only supported for SELECT queries.
T value(int i) const const
bool contains(const T &value) const const
const Key key(const T &value, const Key &defaultKey) const const
Represents a WHERE condition tree.
Helper class to construct arbitrary SQL queries.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Jun 6 2023 03:52:16 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.