6#include <imtgql/IGqlRequest.h>
7#include <imtgql/CGqlParamObject.h>
8#include <imtgql/CGqlFieldObject.h>
15class CGqlRequest:
virtual public IGqlRequest
18 CGqlRequest(
RequestType requestType =
RT_QUERY,
const QByteArray& commandId = QByteArray());
21 void AddParamValue(
const QByteArray& paramId,
const QVariant& value);
22 void AddParamValue(
const QByteArray& paramId,
const CGqlEnum& value);
23 void AddParam(
const QByteArray& paramId,
const CGqlParamObject& param);
24 void AddField(
const QByteArray& fieldId,
const CGqlFieldObject& field);
25 void AddSimpleField(
const QByteArray& fieldId);
26 void SetGqlContext(IGqlContextSharedPtr gqlContext);
28 void SetCommandId(
const QByteArray& commandId);
29 QByteArray GetHeader(
const QByteArray& headerId)
const;
30 void SetHeader(
const QByteArray& headerId,
const QByteArray& value);
32 const CGqlFieldObject& GetFields()
const;
33 const CGqlParamObject& GetParams()
const;
35 void SetParams(
const CGqlParamObject& params);
37 const CGqlFieldObject* GetFieldObject(
const QByteArray& fieldId)
const;
38 const CGqlParamObject* GetParamObject(
const QByteArray& paramId)
const;
39 const CGqlParamObject& GetVariables()
const;
40 const QString& GetOperationName()
const;
43 void SetProtocolVersion(
const QByteArray& protocolVersion);
45 bool ParseQuery(
const QByteArray& query, qsizetype& errorPosition);
48 virtual QByteArray GetCommandId()
const override;
49 virtual RequestType GetRequestType()
const override;
50 virtual QByteArray GetQuery()
const override;
51 virtual const IGqlContext* GetRequestContext()
const override;
52 virtual QByteArray GetProtocolVersion()
const override;
55 virtual QByteArray GetFactoryId()
const override;
58 virtual bool Serialize(iser::IArchive& archive)
override;
61 virtual int GetSupportedOperations()
const override;
62 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
63 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS)
const override;
64 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
67 virtual QByteArray CreateQueryFields()
const;
68 virtual QByteArray CreateQueryParams()
const;
69 virtual QByteArray AddObjectFieldPart(
const CGqlFieldObject& gqlObject)
const;
70 virtual QByteArray AddObjectParamPart(
const CGqlParamObject& gqlObject)
const;
71 virtual QByteArray AddObjectParamValue(
const QVariant& value)
const;
72 virtual void ParseObjectFieldPart(CGqlFieldObject& gqlObject,
const QJsonObject&
object)
const;
73 virtual void ParseObjectParamPart(CGqlParamObject& gqlObject,
const QJsonObject&
object)
const;
76 void SetParseObject(
const QByteArray& commandId);
77 void SetParseText(
const QByteArray& text);
78 void StartArray(
const QByteArray& text);
82 QByteArray m_commandId;
84 CGqlParamObject m_params;
85 CGqlFieldObject m_fields;
86 CGqlParamObject m_variables;
87 QString m_operationName;
94 bool m_startArrayPrimitives;
96 QByteArray m_currentField;
97 QByteArray m_protocolVersion;
99 CGqlParamObject* m_activeGqlObjectPtr;
100 CGqlFieldObject* m_activeFieldObjectPtr;
101 QList<CGqlParamObject*> m_objectArrayList;
102 IGqlContextSharedPtr m_gqlContextPtr;
103 QList<QByteArray> m_activeArrayIds;
105 static const QHash<QByteArray, IGqlRequest::RequestType> s_requestNameMap;