Skip to content

Commit 09c967a

Browse files
committed
Output the Response structs
1 parent b27d5d3 commit 09c967a

File tree

7 files changed

+339
-69
lines changed

7 files changed

+339
-69
lines changed

include/ClientGenerator.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ class Generator
4242

4343
bool outputHeader() const noexcept;
4444
void outputGetRequestDeclaration(std::ostream& headerFile) const noexcept;
45+
bool outputResponseFieldType(std::ostream& headerFile, const ResponseField& responseField,
46+
size_t indent = 0) const noexcept;
47+
48+
std::string getResponseFieldCppType(const ResponseField& responseField) const noexcept;
4549

4650
bool outputSource() const noexcept;
4751
void outputGetRequestImplementation(std::ostream& sourceFile) const noexcept;

include/RequestLoader.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,9 @@ class RequestLoader
8181
const RequestSchemaTypeList& getReferencedInputTypes() const noexcept;
8282
const RequestSchemaTypeList& getReferencedEnums() const noexcept;
8383

84-
std::string getInputCppType(const RequestVariable& variable) const noexcept;
85-
std::string getOutputCppType(const ResponseField& field) const noexcept;
84+
std::string getInputCppType(const RequestSchemaType& wrappedInputType) const noexcept;
85+
static std::string getOutputCppType(
86+
std::string_view outputCppType, const TypeModifierStack& modifiers) noexcept;
8687

8788
private:
8889
void buildSchema();

samples/client/MutateClient.h

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,37 @@ const std::string& GetRequestText() noexcept;
5353
// Return a pre-parsed, pre-validated request object.
5454
const peg::ast& GetRequestObject() noexcept;
5555

56-
struct CompleteTaskInput;
57-
58-
struct CompleteTaskInput {};
56+
struct CompleteTaskInput
57+
{
58+
response::IdType id;
59+
std::optional<response::BooleanType> isComplete;
60+
std::optional<response::StringType> clientMutationId;
61+
};
5962

6063
struct Variables
6164
{
6265
CompleteTaskInput input;
6366
};
6467

68+
struct Response
69+
{
70+
struct completedTask_CompleteTaskPayload
71+
{
72+
struct completedTask_Task
73+
{
74+
response::IdType completedTaskId;
75+
std::optional<response::StringType> title;
76+
response::BooleanType isComplete;
77+
};
78+
79+
std::optional<completedTask_Task> completedTask;
80+
81+
std::optional<response::StringType> clientMutationId;
82+
};
83+
84+
completedTask_CompleteTaskPayload completedTask;
85+
};
86+
6587
} /* namespace graphql::mutation::CompleteTaskMutation */
6688

6789
#endif // MUTATECLIENT_H

samples/client/QueryClient.h

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,70 @@ const std::string& GetRequestText() noexcept;
7676
// Return a pre-parsed, pre-validated request object.
7777
const peg::ast& GetRequestObject() noexcept;
7878

79+
struct Response
80+
{
81+
struct appointments_AppointmentConnection
82+
{
83+
struct edges_AppointmentEdge
84+
{
85+
struct node_Appointment
86+
{
87+
response::IdType id;
88+
std::optional<response::StringType> subject;
89+
std::optional<response::Value> when;
90+
response::BooleanType isNow;
91+
response::StringType _typename;
92+
};
93+
94+
std::optional<node_Appointment> node;
95+
};
96+
97+
std::optional<std::vector<std::optional<edges_AppointmentEdge>>> edges;
98+
};
99+
100+
appointments_AppointmentConnection appointments;
101+
102+
struct tasks_TaskConnection
103+
{
104+
struct edges_TaskEdge
105+
{
106+
struct node_Task
107+
{
108+
response::IdType id;
109+
std::optional<response::StringType> title;
110+
response::BooleanType isComplete;
111+
response::StringType _typename;
112+
};
113+
114+
std::optional<node_Task> node;
115+
};
116+
117+
std::optional<std::vector<std::optional<edges_TaskEdge>>> edges;
118+
};
119+
120+
tasks_TaskConnection tasks;
121+
122+
struct unreadCounts_FolderConnection
123+
{
124+
struct edges_FolderEdge
125+
{
126+
struct node_Folder
127+
{
128+
response::IdType id;
129+
std::optional<response::StringType> name;
130+
response::IntType unreadCount;
131+
response::StringType _typename;
132+
};
133+
134+
std::optional<node_Folder> node;
135+
};
136+
137+
std::optional<std::vector<std::optional<edges_FolderEdge>>> edges;
138+
};
139+
140+
unreadCounts_FolderConnection unreadCounts;
141+
};
142+
79143
} /* namespace graphql::query::Query */
80144

81145
#endif // QUERYCLIENT_H

samples/client/SubscribeClient.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,19 @@ const std::string& GetRequestText() noexcept;
5151
// Return a pre-parsed, pre-validated request object.
5252
const peg::ast& GetRequestObject() noexcept;
5353

54+
struct Response
55+
{
56+
struct nextAppointment_Appointment
57+
{
58+
response::IdType nextAppointmentId;
59+
std::optional<response::Value> when;
60+
std::optional<response::StringType> subject;
61+
response::BooleanType isNow;
62+
};
63+
64+
std::optional<nextAppointment_Appointment> nextAppointment;
65+
};
66+
5467
} /* namespace graphql::subscription::TestSubscription */
5568

5669
#endif // SUBSCRIBECLIENT_H

0 commit comments

Comments
 (0)