ImagingTools Core SDK
CGqlSdlRequestTest.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <ipackage/CComponentAccessor.h>
7
8// ImtCore includes
9#include <QtCore/QJsonObject>
10#include <imtgql/CGqlRequest.h>
11#include <imtgql/IGqlRequestHandler.h>
12#include <imtdb/IDatabaseEngine.h>
13
14
15namespace imtgqltest
16{
17
18
19class CGqlSdlRequestTest: public QObject
20{
21 Q_OBJECT
22protected:
23 template <class Request, class Arguments, class ResponseData>
24 bool SendRequest(Arguments arguments, class ResponseData::V1_0& response) const
25 {
26 imtgql::CGqlRequest gqlRequest;
27
28 bool ok = Request::SetupGqlRequest(gqlRequest, arguments);
29 if (ok){
30 const imtgql::IGqlRequestHandler* requestHandlerPtr = GetRequestHandler();
31 if (requestHandlerPtr == nullptr){
32 return false;
33 }
34
35 QString errorMessage;
36 QJsonObject responseObj = requestHandlerPtr->CreateResponse(gqlRequest, errorMessage);
37 if (responseObj.isEmpty()){
38 return false;
39 }
40
41 if (responseObj.contains(QStringLiteral("errors"))){
42 return false;
43 }
44
45 QJsonObject dataObj;
46 if (responseObj.contains(QStringLiteral("data"))){
47 dataObj = responseObj.value(QStringLiteral("data")).toObject();
48 }
49
50 if (dataObj.isEmpty()){
51 return false;
52 }
53
54 if (!response.ReadFromJsonObject(dataObj)){
55 return false;
56 }
57 }
58
59 return true;
60 }
61
62 ipackage::CComponentAccessor* GetComponentAccessor() const;
63 const imtgql::IGqlRequestHandler* GetRequestHandler() const;
64
65 QSqlQuery ExecuteQuery(const QString& query, QSqlError* sqlError = nullptr) const;
66
67protected:
68 mutable istd::TSmartPtr<ipackage::CComponentAccessor> m_componentAccessorPtr;
69 QString m_registryFile;
70 QString m_configFile;
71};
72
73
74} // namespace imtgqltest
75