File indexing completed on 2024-06-23 05:07:10

0001 /*
0002     SPDX-FileCopyrightText: 2007 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef AKONADI_SELECTQUERYBUILDER_H
0008 #define AKONADI_SELECTQUERYBUILDER_H
0009 
0010 #include "storage/datastore.h"
0011 #include "storage/querybuilder.h"
0012 
0013 namespace Akonadi
0014 {
0015 namespace Server
0016 {
0017 /**
0018   Helper class for creating and executing database SELECT queries.
0019 */
0020 template<typename T> class SelectQueryBuilder : public QueryBuilder
0021 {
0022 public:
0023     /**
0024       Creates a new query builder.
0025     */
0026     inline SelectQueryBuilder()
0027         : SelectQueryBuilder(DataStore::self())
0028     {
0029     }
0030 
0031     explicit inline SelectQueryBuilder(DataStore *store)
0032         : QueryBuilder(store, T::tableName(), Select)
0033     {
0034         addColumns(T::fullColumnNames());
0035     }
0036 
0037     /**
0038       Returns the result of this SELECT query.
0039     */
0040     QList<T> result()
0041     {
0042         return T::extractResult(dataStore(), query());
0043     }
0044 };
0045 
0046 } // namespace Server
0047 } // namespace Akonadi
0048 
0049 #endif