@@ -62,7 +62,7 @@ std::shared_ptr<Appointment> Query::findAppointment(const service::FieldParams&
6262
6363 for (const auto & appointment : _appointments)
6464 {
65- auto appointmentId = appointment->getId (params).get ();
65+ auto appointmentId = appointment->getId (service::FieldParams ( params, response::Value (response::Type::Map)) ).get ();
6666
6767 if (appointmentId == id)
6868 {
@@ -96,7 +96,7 @@ std::shared_ptr<Task> Query::findTask(const service::FieldParams& params, const
9696
9797 for (const auto & task : _tasks)
9898 {
99- auto taskId = task->getId (params).get ();
99+ auto taskId = task->getId (service::FieldParams ( params, response::Value (response::Type::Map)) ).get ();
100100
101101 if (taskId == id)
102102 {
@@ -130,7 +130,7 @@ std::shared_ptr<Folder> Query::findUnreadCount(const service::FieldParams& param
130130
131131 for (const auto & folder : _unreadCounts)
132132 {
133- auto folderId = folder->getId (params).get ();
133+ auto folderId = folder->getId (service::FieldParams ( params, response::Value (response::Type::Map)) ).get ();
134134
135135 if (folderId == id)
136136 {
@@ -141,7 +141,7 @@ std::shared_ptr<Folder> Query::findUnreadCount(const service::FieldParams& param
141141 return nullptr ;
142142}
143143
144- std::future<std::shared_ptr<service::Object>> Query::getNode (const service::FieldParams& params, std::vector<uint8_t >&& id) const
144+ std::future<std::shared_ptr<service::Object>> Query::getNode (service::FieldParams& & params, std::vector<uint8_t >&& id) const
145145{
146146 std::promise<std::shared_ptr<service::Object>> promise;
147147 auto appointment = findAppointment (params, id);
@@ -197,16 +197,15 @@ struct EdgeConstraints
197197 unusedDirectives,
198198 unusedDirectives,
199199 };
200- const service::FieldParams fieldParams (selectionSetParams, {});
201200
202201 if (after)
203202 {
204203 const auto & encoded = after->get <const response::StringType&>();
205204 auto afterId = service::Base64::fromBase64 (encoded.c_str (), encoded.size ());
206205 auto itrAfter = std::find_if (itrFirst, itrLast,
207- [this , &fieldParams , &afterId](const std::shared_ptr<_Object>& entry)
206+ [this , &selectionSetParams , &afterId](const std::shared_ptr<_Object>& entry)
208207 {
209- return entry->getId (fieldParams ).get () == afterId;
208+ return entry->getId (service::FieldParams (selectionSetParams, {}) ).get () == afterId;
210209 });
211210
212211 if (itrAfter != itrLast)
@@ -220,9 +219,9 @@ struct EdgeConstraints
220219 const auto & encoded = before->get <const response::StringType&>();
221220 auto beforeId = service::Base64::fromBase64 (encoded.c_str (), encoded.size ());
222221 auto itrBefore = std::find_if (itrFirst, itrLast,
223- [this , &fieldParams , &beforeId](const std::shared_ptr<_Object>& entry)
222+ [this , &selectionSetParams , &beforeId](const std::shared_ptr<_Object>& entry)
224223 {
225- return entry->getId (fieldParams ).get () == beforeId;
224+ return entry->getId (service::FieldParams (selectionSetParams, {}) ).get () == beforeId;
226225 });
227226
228227 if (itrBefore != itrLast)
@@ -276,7 +275,7 @@ struct EdgeConstraints
276275 const vec_type& _objects;
277276};
278277
279- std::future<std::shared_ptr<object::AppointmentConnection>> Query::getAppointments (const service::FieldParams& params, std::unique_ptr<int >&& first, std::unique_ptr<response::Value>&& after, std::unique_ptr<int >&& last, std::unique_ptr<response::Value>&& before) const
278+ std::future<std::shared_ptr<object::AppointmentConnection>> Query::getAppointments (service::FieldParams& & params, std::unique_ptr<int >&& first, std::unique_ptr<response::Value>&& after, std::unique_ptr<int >&& last, std::unique_ptr<response::Value>&& before) const
280279{
281280 auto spThis = shared_from_this ();
282281 auto state = params.state ;
@@ -292,7 +291,7 @@ std::future<std::shared_ptr<object::AppointmentConnection>> Query::getAppointmen
292291 }, std::move (first), std::move (after), std::move (last), std::move (before));
293292}
294293
295- std::future<std::shared_ptr<object::TaskConnection>> Query::getTasks (const service::FieldParams& params, std::unique_ptr<int >&& first, std::unique_ptr<response::Value>&& after, std::unique_ptr<int >&& last, std::unique_ptr<response::Value>&& before) const
294+ std::future<std::shared_ptr<object::TaskConnection>> Query::getTasks (service::FieldParams& & params, std::unique_ptr<int >&& first, std::unique_ptr<response::Value>&& after, std::unique_ptr<int >&& last, std::unique_ptr<response::Value>&& before) const
296295{
297296 auto spThis = shared_from_this ();
298297 auto state = params.state ;
@@ -308,7 +307,7 @@ std::future<std::shared_ptr<object::TaskConnection>> Query::getTasks(const servi
308307 }, std::move (first), std::move (after), std::move (last), std::move (before));
309308}
310309
311- std::future<std::shared_ptr<object::FolderConnection>> Query::getUnreadCounts (const service::FieldParams& params, std::unique_ptr<int >&& first, std::unique_ptr<response::Value>&& after, std::unique_ptr<int >&& last, std::unique_ptr<response::Value>&& before) const
310+ std::future<std::shared_ptr<object::FolderConnection>> Query::getUnreadCounts (service::FieldParams& & params, std::unique_ptr<int >&& first, std::unique_ptr<response::Value>&& after, std::unique_ptr<int >&& last, std::unique_ptr<response::Value>&& before) const
312311{
313312 auto spThis = shared_from_this ();
314313 auto state = params.state ;
@@ -324,7 +323,7 @@ std::future<std::shared_ptr<object::FolderConnection>> Query::getUnreadCounts(co
324323 }, std::move (first), std::move (after), std::move (last), std::move (before));
325324}
326325
327- std::future<std::vector<std::shared_ptr<object::Appointment>>> Query::getAppointmentsById (const service::FieldParams& params, std::vector<std::vector<uint8_t >>&& ids) const
326+ std::future<std::vector<std::shared_ptr<object::Appointment>>> Query::getAppointmentsById (service::FieldParams& & params, std::vector<std::vector<uint8_t >>&& ids) const
328327{
329328 std::promise<std::vector<std::shared_ptr<object::Appointment>>> promise;
330329 std::vector<std::shared_ptr<object::Appointment>> result (ids.size ());
@@ -339,7 +338,7 @@ std::future<std::vector<std::shared_ptr<object::Appointment>>> Query::getAppoint
339338 return promise.get_future ();
340339}
341340
342- std::future<std::vector<std::shared_ptr<object::Task>>> Query::getTasksById (const service::FieldParams& params, std::vector<std::vector<uint8_t >>&& ids) const
341+ std::future<std::vector<std::shared_ptr<object::Task>>> Query::getTasksById (service::FieldParams& & params, std::vector<std::vector<uint8_t >>&& ids) const
343342{
344343 std::promise<std::vector<std::shared_ptr<object::Task>>> promise;
345344 std::vector<std::shared_ptr<object::Task>> result (ids.size ());
@@ -354,7 +353,7 @@ std::future<std::vector<std::shared_ptr<object::Task>>> Query::getTasksById(cons
354353 return promise.get_future ();
355354}
356355
357- std::future<std::vector<std::shared_ptr<object::Folder>>> Query::getUnreadCountsById (const service::FieldParams& params, std::vector<std::vector<uint8_t >>&& ids) const
356+ std::future<std::vector<std::shared_ptr<object::Folder>>> Query::getUnreadCountsById (service::FieldParams& & params, std::vector<std::vector<uint8_t >>&& ids) const
358357{
359358 std::promise<std::vector<std::shared_ptr<object::Folder>>> promise;
360359 std::vector<std::shared_ptr<object::Folder>> result (ids.size ());
@@ -369,12 +368,21 @@ std::future<std::vector<std::shared_ptr<object::Folder>>> Query::getUnreadCounts
369368 return promise.get_future ();
370369}
371370
371+ std::future<std::shared_ptr<object::NestedType>> Query::getNested (service::FieldParams&& params) const
372+ {
373+ std::promise<std::shared_ptr<object::NestedType>> promise;
374+
375+ promise.set_value (std::make_shared<NestedType>(std::move (params), 1 ));
376+
377+ return promise.get_future ();
378+ }
379+
372380Mutation::Mutation (completeTaskMutation&& mutateCompleteTask)
373381 : _mutateCompleteTask(std::move(mutateCompleteTask))
374382{
375383}
376384
377- std::future<std::shared_ptr<object::CompleteTaskPayload>> Mutation::getCompleteTask (const service::FieldParams& params, CompleteTaskInput&& input) const
385+ std::future<std::shared_ptr<object::CompleteTaskPayload>> Mutation::getCompleteTask (service::FieldParams& & params, CompleteTaskInput&& input) const
378386{
379387 std::promise<std::shared_ptr<object::CompleteTaskPayload>> promise;
380388
@@ -383,6 +391,45 @@ std::future<std::shared_ptr<object::CompleteTaskPayload>> Mutation::getCompleteT
383391 return promise.get_future ();
384392}
385393
394+ std::stack<CapturedParams> NestedType::_capturedParams;
395+
396+ NestedType::NestedType (service::FieldParams&& params, int depth)
397+ : depth(depth)
398+ {
399+ _capturedParams.push ({
400+ response::Value (params.operationDirectives ),
401+ response::Value (params.fragmentDefinitionDirectives ),
402+ response::Value (params.fragmentSpreadDirectives ),
403+ response::Value (params.inlineFragmentDirectives ),
404+ std::move (params.fieldDirectives )
405+ });
406+ }
407+
408+ std::future<response::IntType> NestedType::getDepth (service::FieldParams&& params) const
409+ {
410+ std::promise<response::IntType> promise;
411+
412+ promise.set_value (depth);
413+
414+ return promise.get_future ();
415+ }
416+
417+ std::future<std::shared_ptr<object::NestedType>> NestedType::getNested (service::FieldParams&& params) const
418+ {
419+ std::promise<std::shared_ptr<object::NestedType>> promise;
420+
421+ promise.set_value (std::make_shared<NestedType>(std::move (params), depth + 1 ));
422+
423+ return promise.get_future ();
424+ }
425+
426+ std::stack<CapturedParams> NestedType::getCapturedParams ()
427+ {
428+ auto result = std::move (_capturedParams);
429+
430+ return result;
431+ }
432+
386433} /* namespace today */
387434} /* namespace graphql */
388435} /* namespace facebook */
0 commit comments