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