ecoportal-api-graphql 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +363 -1
  3. data/LICENSE +21 -21
  4. data/README.md +24 -24
  5. data/lib/ecoportal/api/common/graphql/auth_service.rb +115 -115
  6. data/lib/ecoportal/api/common/graphql/class_helpers.rb +46 -46
  7. data/lib/ecoportal/api/common/graphql/client.rb +69 -69
  8. data/lib/ecoportal/api/common/graphql/hash_helpers.rb +105 -105
  9. data/lib/ecoportal/api/common/graphql/http_client.rb +85 -2
  10. data/lib/ecoportal/api/common/graphql/model/as_input.rb +54 -54
  11. data/lib/ecoportal/api/common/graphql/model/diffable/classic_diff_service.rb +49 -49
  12. data/lib/ecoportal/api/common/graphql/model/diffable/diff_service.rb +188 -188
  13. data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff.rb +55 -55
  14. data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff_nesting.rb +295 -295
  15. data/lib/ecoportal/api/common/graphql/model.rb +17 -17
  16. data/lib/ecoportal/api/common/graphql/patches.rb +1 -1
  17. data/lib/ecoportal/api/common/graphql/query_integration.rb +45 -45
  18. data/lib/ecoportal/api/common/graphql.rb +16 -16
  19. data/lib/ecoportal/api/common.graphql.rb +8 -8
  20. data/lib/ecoportal/api/graphql/base/action_category.rb +15 -15
  21. data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +1 -1
  22. data/lib/ecoportal/api/graphql/base/contractor_entity.rb +24 -24
  23. data/lib/ecoportal/api/graphql/base/date_time.rb +12 -12
  24. data/lib/ecoportal/api/graphql/base/delta_result.rb +16 -16
  25. data/lib/ecoportal/api/graphql/base/field.rb +12 -12
  26. data/lib/ecoportal/api/graphql/base/file_attachment.rb +15 -15
  27. data/lib/ecoportal/api/graphql/base/location_node.rb +14 -14
  28. data/lib/ecoportal/api/graphql/base/location_structure/draft/structure.rb +37 -37
  29. data/lib/ecoportal/api/graphql/base/location_structure/draft.rb +93 -93
  30. data/lib/ecoportal/api/graphql/base/page/data_field/actions_list.rb +9 -9
  31. data/lib/ecoportal/api/graphql/base/page/data_field/ai_summary.rb +18 -18
  32. data/lib/ecoportal/api/graphql/base/page/data_field/checklist.rb +29 -29
  33. data/lib/ecoportal/api/graphql/base/page/data_field/cross_reference.rb +1 -1
  34. data/lib/ecoportal/api/graphql/base/page/data_field/date_field.rb +23 -23
  35. data/lib/ecoportal/api/graphql/base/page/data_field/geo.rb +24 -24
  36. data/lib/ecoportal/api/graphql/base/page/data_field/image_gallery.rb +1 -1
  37. data/lib/ecoportal/api/graphql/base/page/data_field/law.rb +8 -8
  38. data/lib/ecoportal/api/graphql/base/page/data_field/mailbox.rb +9 -9
  39. data/lib/ecoportal/api/graphql/base/page/data_field/plain_text.rb +17 -17
  40. data/lib/ecoportal/api/graphql/base/page/data_field/rich_text.rb +26 -26
  41. data/lib/ecoportal/api/graphql/base/page/data_field/signature.rb +9 -9
  42. data/lib/ecoportal/api/graphql/base/page/data_field/smart_fill.rb +17 -17
  43. data/lib/ecoportal/api/graphql/base/page/data_field/table.rb +9 -9
  44. data/lib/ecoportal/api/graphql/base/page/data_field/tag_field.rb +21 -21
  45. data/lib/ecoportal/api/graphql/base/page/phased/stage.rb +51 -0
  46. data/lib/ecoportal/api/graphql/base/page/phased.rb +15 -15
  47. data/lib/ecoportal/api/graphql/base/page/section.rb +48 -48
  48. data/lib/ecoportal/api/graphql/base/page_info.rb +12 -12
  49. data/lib/ecoportal/api/graphql/base/pages_workflow/operation_interface.rb +39 -39
  50. data/lib/ecoportal/api/graphql/base/pages_workflow/operations/assign_to.rb +27 -27
  51. data/lib/ecoportal/api/graphql/base/pages_workflow/operations/send_notification.rb +30 -30
  52. data/lib/ecoportal/api/graphql/base/pages_workflow/recipient_config.rb +34 -34
  53. data/lib/ecoportal/api/graphql/base/pages_workflow.rb +35 -35
  54. data/lib/ecoportal/api/graphql/base/person_member.rb +22 -22
  55. data/lib/ecoportal/api/graphql/base/preview_page.rb +23 -23
  56. data/lib/ecoportal/api/graphql/base/register.rb +1 -1
  57. data/lib/ecoportal/api/graphql/base/resource.rb +13 -13
  58. data/lib/ecoportal/api/graphql/base/template/change_log_entry.rb +118 -0
  59. data/lib/ecoportal/api/graphql/base/template.rb +2 -0
  60. data/lib/ecoportal/api/graphql/builder/action.rb +41 -41
  61. data/lib/ecoportal/api/graphql/builder/location_structure/draft.rb +64 -64
  62. data/lib/ecoportal/api/graphql/builder/location_structure.rb +40 -40
  63. data/lib/ecoportal/api/graphql/builder/register/preset_view.rb +84 -84
  64. data/lib/ecoportal/api/graphql/builder/register.rb +49 -49
  65. data/lib/ecoportal/api/graphql/builder/template.rb +28 -0
  66. data/lib/ecoportal/api/graphql/builder/template_builder.rb +21 -2
  67. data/lib/ecoportal/api/graphql/compat/page_reference.rb +23 -23
  68. data/lib/ecoportal/api/graphql/compat/registers.rb +84 -84
  69. data/lib/ecoportal/api/graphql/compat/search_results.rb +33 -33
  70. data/lib/ecoportal/api/graphql/compat.rb +17 -17
  71. data/lib/ecoportal/api/graphql/concerns/data_field_access.rb +71 -71
  72. data/lib/ecoportal/api/graphql/concerns/fragment_definitions.rb +68 -68
  73. data/lib/ecoportal/api/graphql/concerns/snake_camel_access.rb +60 -60
  74. data/lib/ecoportal/api/graphql/connection/preset_view.rb +11 -11
  75. data/lib/ecoportal/api/graphql/connection/template_change_log.rb +19 -0
  76. data/lib/ecoportal/api/graphql/connection.rb +1 -0
  77. data/lib/ecoportal/api/graphql/diff/change.rb +7 -2
  78. data/lib/ecoportal/api/graphql/diff/command_synthesizer.rb +19 -1
  79. data/lib/ecoportal/api/graphql/diff/version_diff.rb +13 -6
  80. data/lib/ecoportal/api/graphql/error/locations_error/fetch_nested.rb +51 -51
  81. data/lib/ecoportal/api/graphql/error/locations_error.rb +28 -28
  82. data/lib/ecoportal/api/graphql/error/locations_validation_error.rb +20 -20
  83. data/lib/ecoportal/api/graphql/error/validation_errors.rb +28 -28
  84. data/lib/ecoportal/api/graphql/error.rb +12 -12
  85. data/lib/ecoportal/api/graphql/file_upload.rb +10 -10
  86. data/lib/ecoportal/api/graphql/fragment/action.rb +65 -65
  87. data/lib/ecoportal/api/graphql/fragment/action_category.rb +17 -17
  88. data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +20 -20
  89. data/lib/ecoportal/api/graphql/fragment/locations_error.rb +19 -19
  90. data/lib/ecoportal/api/graphql/fragment/page.rb +1 -0
  91. data/lib/ecoportal/api/graphql/fragment/pages/common_page_union.rb +2 -0
  92. data/lib/ecoportal/api/graphql/fragment/pages.rb +15 -15
  93. data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -17
  94. data/lib/ecoportal/api/graphql/fragment/template_change_log.rb +102 -0
  95. data/lib/ecoportal/api/graphql/fragment.rb +1 -0
  96. data/lib/ecoportal/api/graphql/helpers/locations_tree.rb +41 -41
  97. data/lib/ecoportal/api/graphql/helpers.rb +10 -10
  98. data/lib/ecoportal/api/graphql/input/action/archive.rb +14 -14
  99. data/lib/ecoportal/api/graphql/input/action/create.rb +13 -13
  100. data/lib/ecoportal/api/graphql/input/action.rb +14 -14
  101. data/lib/ecoportal/api/graphql/input/contractor_entity/create.rb +14 -14
  102. data/lib/ecoportal/api/graphql/input/contractor_entity/destroy.rb +13 -13
  103. data/lib/ecoportal/api/graphql/input/delta_input.rb +16 -16
  104. data/lib/ecoportal/api/graphql/input/id_diff.rb +11 -11
  105. data/lib/ecoportal/api/graphql/input/location_structure/archive_command.rb +13 -13
  106. data/lib/ecoportal/api/graphql/input/location_structure/delete_command.rb +13 -13
  107. data/lib/ecoportal/api/graphql/input/location_structure/draft/create.rb +15 -15
  108. data/lib/ecoportal/api/graphql/input/location_structure/draft/delete.rb +15 -15
  109. data/lib/ecoportal/api/graphql/input/location_structure/draft/drop_bad_commands.rb +16 -16
  110. data/lib/ecoportal/api/graphql/input/location_structure/draft/publish.rb +16 -16
  111. data/lib/ecoportal/api/graphql/input/location_structure/draft.rb +19 -19
  112. data/lib/ecoportal/api/graphql/input/location_structure/insert_command.rb +21 -13
  113. data/lib/ecoportal/api/graphql/input/location_structure/move_command.rb +14 -14
  114. data/lib/ecoportal/api/graphql/input/location_structure/reorder_command.rb +13 -13
  115. data/lib/ecoportal/api/graphql/input/location_structure/unarchive_command.rb +13 -13
  116. data/lib/ecoportal/api/graphql/input/location_structure.rb +20 -20
  117. data/lib/ecoportal/api/graphql/input/page/archive.rb +14 -14
  118. data/lib/ecoportal/api/graphql/input/page/build_from_template.rb +13 -13
  119. data/lib/ecoportal/api/graphql/input/page/create_draft.rb +13 -13
  120. data/lib/ecoportal/api/graphql/input/page/create_from_template.rb +18 -18
  121. data/lib/ecoportal/api/graphql/input/page/delete_draft.rb +13 -13
  122. data/lib/ecoportal/api/graphql/input/page/publish_draft.rb +13 -13
  123. data/lib/ecoportal/api/graphql/input/page/review_task.rb +27 -14
  124. data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -14
  125. data/lib/ecoportal/api/graphql/input/page.rb +26 -26
  126. data/lib/ecoportal/api/graphql/input/preset_view/create.rb +18 -18
  127. data/lib/ecoportal/api/graphql/input/preset_view/permission.rb +16 -16
  128. data/lib/ecoportal/api/graphql/input/preset_view/update.rb +1 -1
  129. data/lib/ecoportal/api/graphql/input/preset_view.rb +14 -14
  130. data/lib/ecoportal/api/graphql/input/register/create.rb +18 -18
  131. data/lib/ecoportal/api/graphql/input/register/update.rb +15 -15
  132. data/lib/ecoportal/api/graphql/input/register.rb +13 -13
  133. data/lib/ecoportal/api/graphql/input/search.rb +13 -13
  134. data/lib/ecoportal/api/graphql/input/search_conf/ai_generator.rb +234 -234
  135. data/lib/ecoportal/api/graphql/input/search_filter.rb +12 -12
  136. data/lib/ecoportal/api/graphql/input/search_sorter.rb +11 -11
  137. data/lib/ecoportal/api/graphql/input/workflow_command/add_action_tag.rb +18 -18
  138. data/lib/ecoportal/api/graphql/input/workflow_command/add_binding.rb +18 -18
  139. data/lib/ecoportal/api/graphql/input/workflow_command/add_comment_tagging_user_group.rb +18 -18
  140. data/lib/ecoportal/api/graphql/input/workflow_command/add_default_direct_strategy_user.rb +18 -18
  141. data/lib/ecoportal/api/graphql/input/workflow_command/add_default_strategy.rb +18 -18
  142. data/lib/ecoportal/api/graphql/input/workflow_command/add_direct_strategy_user.rb +18 -18
  143. data/lib/ecoportal/api/graphql/input/workflow_command/add_field.rb +10 -9
  144. data/lib/ecoportal/api/graphql/input/workflow_command/add_force.rb +18 -18
  145. data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_field_config.rb +23 -23
  146. data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_helper.rb +18 -18
  147. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation.rb +18 -18
  148. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_direct_strategy_user.rb +18 -18
  149. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_strategy.rb +18 -18
  150. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_action_type.rb +18 -18
  151. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_filter.rb +18 -18
  152. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_people_field.rb +18 -18
  153. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_task_config.rb +18 -18
  154. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_user.rb +18 -18
  155. data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback.rb +23 -23
  156. data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback_action.rb +18 -18
  157. data/lib/ecoportal/api/graphql/input/workflow_command/add_section.rb +18 -18
  158. data/lib/ecoportal/api/graphql/input/workflow_command/add_select_field_option.rb +25 -19
  159. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_section.rb +18 -18
  160. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_tag.rb +18 -18
  161. data/lib/ecoportal/api/graphql/input/workflow_command/add_strategy.rb +18 -18
  162. data/lib/ecoportal/api/graphql/input/workflow_command/add_task.rb +18 -18
  163. data/lib/ecoportal/api/graphql/input/workflow_command/add_task_assignment_user_group.rb +18 -18
  164. data/lib/ecoportal/api/graphql/input/workflow_command/add_workflow_callback.rb +18 -18
  165. data/lib/ecoportal/api/graphql/input/workflow_command/collapse_section.rb +18 -18
  166. data/lib/ecoportal/api/graphql/input/workflow_command/edit_binding.rb +18 -18
  167. data/lib/ecoportal/api/graphql/input/workflow_command/edit_creator_permissions.rb +18 -18
  168. data/lib/ecoportal/api/graphql/input/workflow_command/edit_default_strategy.rb +18 -18
  169. data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +7 -2
  170. data/lib/ecoportal/api/graphql/input/workflow_command/edit_force.rb +21 -18
  171. data/lib/ecoportal/api/graphql/input/workflow_command/edit_gauge_field_stop.rb +19 -19
  172. data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_field_config.rb +19 -19
  173. data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_helper.rb +18 -18
  174. data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation.rb +18 -18
  175. data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation_strategy.rb +18 -18
  176. data/lib/ecoportal/api/graphql/input/workflow_command/edit_reminder.rb +18 -18
  177. data/lib/ecoportal/api/graphql/input/workflow_command/edit_required_sign_offs.rb +18 -18
  178. data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_comment_tagging.rb +18 -18
  179. data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_task_assignment.rb +18 -18
  180. data/lib/ecoportal/api/graphql/input/workflow_command/edit_scheduled_callback.rb +22 -22
  181. data/lib/ecoportal/api/graphql/input/workflow_command/edit_section_header.rb +18 -18
  182. data/lib/ecoportal/api/graphql/input/workflow_command/edit_select_field_option.rb +23 -19
  183. data/lib/ecoportal/api/graphql/input/workflow_command/edit_stage.rb +18 -18
  184. data/lib/ecoportal/api/graphql/input/workflow_command/edit_strategy.rb +18 -18
  185. data/lib/ecoportal/api/graphql/input/workflow_command/edit_task_due.rb +18 -18
  186. data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_basic_settings.rb +7 -2
  187. data/lib/ecoportal/api/graphql/input/workflow_command/edit_trigger.rb +18 -18
  188. data/lib/ecoportal/api/graphql/input/workflow_command/expand_section.rb +18 -18
  189. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/contractor_entities.rb +28 -24
  190. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +8 -2
  191. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/gauge.rb +20 -20
  192. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/location_field.rb +24 -24
  193. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +8 -2
  194. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/signature.rb +20 -20
  195. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/table.rb +25 -25
  196. data/lib/ecoportal/api/graphql/input/workflow_command/manage_copy_page_configuration.rb +47 -0
  197. data/lib/ecoportal/api/graphql/input/workflow_command/move_stage.rb +18 -18
  198. data/lib/ecoportal/api/graphql/input/workflow_command/remove_action_tag.rb +18 -18
  199. data/lib/ecoportal/api/graphql/input/workflow_command/remove_binding.rb +18 -18
  200. data/lib/ecoportal/api/graphql/input/workflow_command/remove_callback.rb +18 -18
  201. data/lib/ecoportal/api/graphql/input/workflow_command/remove_comment_tagging_user_group.rb +18 -18
  202. data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_direct_strategy_user.rb +18 -18
  203. data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_strategy.rb +18 -18
  204. data/lib/ecoportal/api/graphql/input/workflow_command/remove_direct_strategy_user.rb +18 -18
  205. data/lib/ecoportal/api/graphql/input/workflow_command/remove_field.rb +18 -18
  206. data/lib/ecoportal/api/graphql/input/workflow_command/remove_force.rb +18 -18
  207. data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_helper.rb +18 -18
  208. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation.rb +18 -18
  209. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_direct_strategy_user.rb +18 -18
  210. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_strategy.rb +18 -18
  211. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_action_type.rb +18 -18
  212. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_filter.rb +18 -18
  213. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_people_field.rb +18 -18
  214. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_task_config.rb +18 -18
  215. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_user.rb +18 -18
  216. data/lib/ecoportal/api/graphql/input/workflow_command/remove_scheduled_callback.rb +18 -18
  217. data/lib/ecoportal/api/graphql/input/workflow_command/remove_section.rb +18 -18
  218. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage.rb +18 -18
  219. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_section.rb +18 -18
  220. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_tag.rb +18 -18
  221. data/lib/ecoportal/api/graphql/input/workflow_command/remove_strategy.rb +18 -18
  222. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task.rb +18 -18
  223. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_assignment_user_group.rb +18 -18
  224. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_due.rb +18 -18
  225. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_priority_level.rb +18 -18
  226. data/lib/ecoportal/api/graphql/input/workflow_command.rb +3 -0
  227. data/lib/ecoportal/api/graphql/interface/base_page.rb +14 -0
  228. data/lib/ecoportal/api/graphql/interface/location_structure/node.rb +43 -43
  229. data/lib/ecoportal/api/graphql/interface/location_structure.rb +14 -14
  230. data/lib/ecoportal/api/graphql/interface.rb +11 -11
  231. data/lib/ecoportal/api/graphql/logic/base_model.rb +15 -15
  232. data/lib/ecoportal/api/graphql/logic/base_query.rb +260 -193
  233. data/lib/ecoportal/api/graphql/logic/mutation.rb +59 -59
  234. data/lib/ecoportal/api/graphql/logic/payload.rb +42 -42
  235. data/lib/ecoportal/api/graphql/logic/query.rb +23 -23
  236. data/lib/ecoportal/api/graphql/logic/query_array.rb +30 -30
  237. data/lib/ecoportal/api/graphql/logic/query_connection.rb +48 -48
  238. data/lib/ecoportal/api/graphql/logic.rb +18 -18
  239. data/lib/ecoportal/api/graphql/model/account.rb +15 -15
  240. data/lib/ecoportal/api/graphql/model/action.rb +22 -22
  241. data/lib/ecoportal/api/graphql/model/ai_summary_version.rb +10 -10
  242. data/lib/ecoportal/api/graphql/model/contractor_entity.rb +12 -12
  243. data/lib/ecoportal/api/graphql/model/field.rb +10 -10
  244. data/lib/ecoportal/api/graphql/model/file_attachment.rb +10 -10
  245. data/lib/ecoportal/api/graphql/model/file_container.rb +11 -11
  246. data/lib/ecoportal/api/graphql/model/location_node.rb +14 -14
  247. data/lib/ecoportal/api/graphql/model/location_structure/draft/structure.rb +15 -15
  248. data/lib/ecoportal/api/graphql/model/location_structure/draft.rb +15 -15
  249. data/lib/ecoportal/api/graphql/model/location_structure.rb +16 -16
  250. data/lib/ecoportal/api/graphql/model/organization.rb +9 -0
  251. data/lib/ecoportal/api/graphql/model/page/basic.rb +14 -14
  252. data/lib/ecoportal/api/graphql/model/page/data_field.rb +12 -12
  253. data/lib/ecoportal/api/graphql/model/page/phased/stage.rb +14 -14
  254. data/lib/ecoportal/api/graphql/model/page/phased.rb +17 -0
  255. data/lib/ecoportal/api/graphql/model/page/section.rb +12 -12
  256. data/lib/ecoportal/api/graphql/model/page_union.rb +21 -21
  257. data/lib/ecoportal/api/graphql/model/pages_workflow.rb +20 -20
  258. data/lib/ecoportal/api/graphql/model/preset_view.rb +10 -10
  259. data/lib/ecoportal/api/graphql/model/preview_page.rb +10 -10
  260. data/lib/ecoportal/api/graphql/model/register.rb +10 -10
  261. data/lib/ecoportal/api/graphql/model/resource.rb +13 -13
  262. data/lib/ecoportal/api/graphql/model/template/change_log_entry.rb +19 -0
  263. data/lib/ecoportal/api/graphql/model/template.rb +4 -1
  264. data/lib/ecoportal/api/graphql/model/user.rb +14 -14
  265. data/lib/ecoportal/api/graphql/mutation/action/archive.rb +41 -41
  266. data/lib/ecoportal/api/graphql/mutation/action/create.rb +40 -40
  267. data/lib/ecoportal/api/graphql/mutation/action/update.rb +40 -40
  268. data/lib/ecoportal/api/graphql/mutation/action.rb +14 -14
  269. data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +1 -1
  270. data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +1 -1
  271. data/lib/ecoportal/api/graphql/mutation/ai_summary.rb +13 -13
  272. data/lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb +40 -40
  273. data/lib/ecoportal/api/graphql/mutation/contractor_entity/destroy.rb +40 -40
  274. data/lib/ecoportal/api/graphql/mutation/contractor_entity/update.rb +40 -40
  275. data/lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb +54 -54
  276. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/add_commands.rb +55 -55
  277. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/create.rb +54 -54
  278. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/delete.rb +43 -43
  279. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/drop_bad_commands.rb +56 -56
  280. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/publish.rb +66 -66
  281. data/lib/ecoportal/api/graphql/mutation/location_structure/draft.rb +18 -18
  282. data/lib/ecoportal/api/graphql/mutation/location_structure.rb +13 -13
  283. data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +1 -1
  284. data/lib/ecoportal/api/graphql/mutation/page/archive.rb +40 -40
  285. data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +1 -1
  286. data/lib/ecoportal/api/graphql/mutation/page/build_from_template.rb +50 -50
  287. data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +1 -1
  288. data/lib/ecoportal/api/graphql/mutation/page/create_from_template.rb +43 -43
  289. data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +1 -1
  290. data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +1 -1
  291. data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +1 -1
  292. data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +1 -1
  293. data/lib/ecoportal/api/graphql/mutation/page/unarchive.rb +40 -40
  294. data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +1 -1
  295. data/lib/ecoportal/api/graphql/mutation/page/update.rb +40 -40
  296. data/lib/ecoportal/api/graphql/mutation/page.rb +28 -28
  297. data/lib/ecoportal/api/graphql/mutation/preset_view/create.rb +35 -35
  298. data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +1 -1
  299. data/lib/ecoportal/api/graphql/mutation/preset_view/permission.rb +37 -37
  300. data/lib/ecoportal/api/graphql/mutation/preset_view/update.rb +35 -35
  301. data/lib/ecoportal/api/graphql/mutation/preset_view.rb +15 -15
  302. data/lib/ecoportal/api/graphql/mutation/register/create.rb +35 -35
  303. data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +1 -1
  304. data/lib/ecoportal/api/graphql/mutation/register/update.rb +35 -35
  305. data/lib/ecoportal/api/graphql/mutation/register.rb +14 -14
  306. data/lib/ecoportal/api/graphql/payload/action/archive.rb +13 -13
  307. data/lib/ecoportal/api/graphql/payload/action/create.rb +13 -13
  308. data/lib/ecoportal/api/graphql/payload/action/update.rb +13 -13
  309. data/lib/ecoportal/api/graphql/payload/action.rb +14 -14
  310. data/lib/ecoportal/api/graphql/payload/ai_summary_generate.rb +12 -12
  311. data/lib/ecoportal/api/graphql/payload/contractor_entity/create.rb +13 -13
  312. data/lib/ecoportal/api/graphql/payload/contractor_entity/destroy.rb +12 -12
  313. data/lib/ecoportal/api/graphql/payload/contractor_entity/update.rb +12 -12
  314. data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_jobs.rb +2 -2
  315. data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_workflows.rb +2 -2
  316. data/lib/ecoportal/api/graphql/payload/location_structure/apply_commands.rb +51 -51
  317. data/lib/ecoportal/api/graphql/payload/location_structure/command_execution_result.rb +50 -50
  318. data/lib/ecoportal/api/graphql/payload/location_structure/draft/add_commands.rb +30 -30
  319. data/lib/ecoportal/api/graphql/payload/location_structure/draft/delete.rb +30 -30
  320. data/lib/ecoportal/api/graphql/payload/location_structure/draft/drop_bad_commands.rb +43 -43
  321. data/lib/ecoportal/api/graphql/payload/location_structure/draft/publish.rb +63 -63
  322. data/lib/ecoportal/api/graphql/payload/location_structure/draft.rb +18 -18
  323. data/lib/ecoportal/api/graphql/payload/location_structure.rb +14 -14
  324. data/lib/ecoportal/api/graphql/payload/ok_payload.rb +1 -1
  325. data/lib/ecoportal/api/graphql/payload/page/archive.rb +13 -13
  326. data/lib/ecoportal/api/graphql/payload/page/build_from_template.rb +13 -13
  327. data/lib/ecoportal/api/graphql/payload/page/create_from_template.rb +13 -13
  328. data/lib/ecoportal/api/graphql/payload/page/draft.rb +1 -1
  329. data/lib/ecoportal/api/graphql/payload/page/review_task.rb +1 -1
  330. data/lib/ecoportal/api/graphql/payload/page/unarchive.rb +13 -13
  331. data/lib/ecoportal/api/graphql/payload/page/update.rb +13 -13
  332. data/lib/ecoportal/api/graphql/payload/preset_view.rb +1 -1
  333. data/lib/ecoportal/api/graphql/payload/register.rb +1 -1
  334. data/lib/ecoportal/api/graphql/query/action.rb +33 -33
  335. data/lib/ecoportal/api/graphql/query/action_categories.rb +53 -53
  336. data/lib/ecoportal/api/graphql/query/actions.rb +43 -43
  337. data/lib/ecoportal/api/graphql/query/contractor_entities.rb +53 -53
  338. data/lib/ecoportal/api/graphql/query/file_upload_signature.rb +76 -76
  339. data/lib/ecoportal/api/graphql/query/location_classifications.rb +39 -39
  340. data/lib/ecoportal/api/graphql/query/page_delta.rb +47 -47
  341. data/lib/ecoportal/api/graphql/query/pages.rb +59 -59
  342. data/lib/ecoportal/api/graphql/query/person_members.rb +76 -0
  343. data/lib/ecoportal/api/graphql/query/register_preset_views.rb +1 -1
  344. data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -83
  345. data/lib/ecoportal/api/graphql/query/template_change_log.rb +118 -0
  346. data/lib/ecoportal/api/graphql/query/templates.rb +53 -53
  347. data/lib/ecoportal/api/graphql/query.rb +2 -0
  348. data/lib/ecoportal/api/graphql_version.rb +1 -1
  349. data/lib/ecoportal/api-graphql.rb +10 -10
  350. metadata +10 -8
  351. data/lib/ecoportal/api/common/graphql/CLAUDE.md +0 -36
  352. data/lib/ecoportal/api/common/graphql/model/CLAUDE.md +0 -28
  353. data/lib/ecoportal/api/graphql/CLAUDE.md +0 -37
  354. data/lib/ecoportal/api/graphql/base/CLAUDE.md +0 -50
  355. data/lib/ecoportal/api/graphql/builder/CLAUDE.md +0 -65
@@ -1,23 +1,23 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Compat
5
- # Returned by Compat::Pages#create — mirrors the v2 reference object.
6
- # Scripts access .page_id and .active_stage_id after page creation.
7
- class PageReference
8
- attr_reader :page_id, :active_stage_id, :page
9
-
10
- def initialize(page)
11
- @page = page
12
- @page_id = page.id
13
- @active_stage_id = page.respond_to?(:current_stage_id) ? page.current_stage_id : nil
14
- end
15
-
16
- def success?
17
- !@page_id.nil?
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Compat
5
+ # Returned by Compat::Pages#create — mirrors the v2 reference object.
6
+ # Scripts access .page_id and .active_stage_id after page creation.
7
+ class PageReference
8
+ attr_reader :page_id, :active_stage_id, :page
9
+
10
+ def initialize(page)
11
+ @page = page
12
+ @page_id = page.id
13
+ @active_stage_id = page.respond_to?(:current_stage_id) ? page.current_stage_id : nil
14
+ end
15
+
16
+ def success?
17
+ !@page_id.nil?
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,84 +1,84 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Compat
5
- # v2-compatible registers API backed by GraphQL register search.
6
- # Scripts call: apiv2.registers.search(register_id, options) { |result| ... }
7
- #
8
- # With a block: yields each PreviewPage result (cursor-paginated).
9
- # Without a block (or only_first: true): returns a SearchResults object
10
- # with .total and .total_before_filtering.
11
- #
12
- # Filter translation:
13
- # v2 date_filter { lbound:, ubound: } → GraphQL date_filter { gte:, lte: }
14
- # v2 tag_filter { tags:, mode: } → passed through (same ES backend)
15
- # SearchConf filter objects → passed through directly
16
- class Registers
17
- def initialize(client)
18
- @client = client
19
- end
20
-
21
- # Options:
22
- # sort: 'created_at' | 'updated_at'
23
- # dir: 'asc' | 'desc'
24
- # query: String (full-text search)
25
- # filters: Array of filter objects or v2 filter hashes
26
- # batch_size: Integer (results per request, default 20)
27
- # include_archived: Boolean (default false)
28
- # only_first: Boolean — return after first page (no block needed)
29
- def search(register_id, options = {}, &block)
30
- conf = build_search_conf(options)
31
- first = options.fetch(:batch_size, 20)
32
- query = Query::RegisterPreviewPages.new(@client)
33
-
34
- args = {
35
- registerId: register_id,
36
- searchConf: conf.to_h,
37
- includeArchived: options.fetch(:include_archived, false),
38
- first: first
39
- }
40
-
41
- if block || !options[:only_first]
42
- # Block mode: yield each result, stop if only_first
43
- query.each(**args) do |result|
44
- block&.call(result)
45
- break if options[:only_first]
46
- end
47
- else
48
- # No-block mode: return SearchResults with .total etc.
49
- raw = query.query(**args)
50
- SearchResults.new(raw)
51
- end
52
- end
53
-
54
- private
55
-
56
- def build_search_conf(options)
57
- conf = Input::SearchConf.new
58
-
59
- if (sort_key = options[:sort])
60
- direction = options.fetch(:dir, 'desc').to_sym
61
- conf.sort(sort_key.to_sym, direction)
62
- end
63
-
64
- conf.query(options[:query]) if options[:query]
65
-
66
- Array(options[:filters]).compact.each do |filter|
67
- conf.filter(translate_filter(filter))
68
- end
69
-
70
- conf
71
- end
72
-
73
- # Translates a v2-style filter hash to a GraphQL-compatible filter hash.
74
- # SearchConf filter objects (respond to to_h and are not Hash) pass through.
75
- # v2 date_filter: lbound/ubound → gte/lte
76
- # Other v2 types (tag_filter etc.): passed through — same ES backend.
77
- def translate_filter(filter)
78
- FilterTranslator.to_graphql(filter)
79
- end
80
- end
81
- end
82
- end
83
- end
84
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Compat
5
+ # v2-compatible registers API backed by GraphQL register search.
6
+ # Scripts call: apiv2.registers.search(register_id, options) { |result| ... }
7
+ #
8
+ # With a block: yields each PreviewPage result (cursor-paginated).
9
+ # Without a block (or only_first: true): returns a SearchResults object
10
+ # with .total and .total_before_filtering.
11
+ #
12
+ # Filter translation:
13
+ # v2 date_filter { lbound:, ubound: } → GraphQL date_filter { gte:, lte: }
14
+ # v2 tag_filter { tags:, mode: } → passed through (same ES backend)
15
+ # SearchConf filter objects → passed through directly
16
+ class Registers
17
+ def initialize(client)
18
+ @client = client
19
+ end
20
+
21
+ # Options:
22
+ # sort: 'created_at' | 'updated_at'
23
+ # dir: 'asc' | 'desc'
24
+ # query: String (full-text search)
25
+ # filters: Array of filter objects or v2 filter hashes
26
+ # batch_size: Integer (results per request, default 20)
27
+ # include_archived: Boolean (default false)
28
+ # only_first: Boolean — return after first page (no block needed)
29
+ def search(register_id, options = {}, &block)
30
+ conf = build_search_conf(options)
31
+ first = options.fetch(:batch_size, 20)
32
+ query = Query::RegisterPreviewPages.new(@client)
33
+
34
+ args = {
35
+ registerId: register_id,
36
+ searchConf: conf.to_h,
37
+ includeArchived: options.fetch(:include_archived, false),
38
+ first: first
39
+ }
40
+
41
+ if block || !options[:only_first]
42
+ # Block mode: yield each result, stop if only_first
43
+ query.each(**args) do |result|
44
+ block&.call(result)
45
+ break if options[:only_first]
46
+ end
47
+ else
48
+ # No-block mode: return SearchResults with .total etc.
49
+ raw = query.query(**args)
50
+ SearchResults.new(raw)
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def build_search_conf(options)
57
+ conf = Input::SearchConf.new
58
+
59
+ if (sort_key = options[:sort])
60
+ direction = options.fetch(:dir, 'desc').to_sym
61
+ conf.sort(sort_key.to_sym, direction)
62
+ end
63
+
64
+ conf.query(options[:query]) if options[:query]
65
+
66
+ Array(options[:filters]).compact.each do |filter|
67
+ conf.filter(translate_filter(filter))
68
+ end
69
+
70
+ conf
71
+ end
72
+
73
+ # Translates a v2-style filter hash to a GraphQL-compatible filter hash.
74
+ # SearchConf filter objects (respond to to_h and are not Hash) pass through.
75
+ # v2 date_filter: lbound/ubound → gte/lte
76
+ # Other v2 types (tag_filter etc.): passed through — same ES backend.
77
+ def translate_filter(filter)
78
+ FilterTranslator.to_graphql(filter)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -1,33 +1,33 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Compat
5
- # Wraps a GraphQL connection object to expose the v2-compatible search
6
- # result interface. eco-helpers scripts access:
7
- # search_results.total — filtered count
8
- # search_results.total_before_filtering — pre-filter count (approximated)
9
- # (also Enumerable for iteration)
10
- class SearchResults
11
- include Enumerable
12
-
13
- attr_reader :total, :total_before_filtering
14
-
15
- def initialize(connection)
16
- @total = connection.totalCount
17
- # GraphQL does not expose a pre-filter count — use the same value.
18
- @total_before_filtering = connection.totalCount
19
- @nodes = connection.nodes
20
- end
21
-
22
- def each(&block)
23
- @nodes.each(&block)
24
- end
25
-
26
- def empty?
27
- @nodes.empty?
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Compat
5
+ # Wraps a GraphQL connection object to expose the v2-compatible search
6
+ # result interface. eco-helpers scripts access:
7
+ # search_results.total — filtered count
8
+ # search_results.total_before_filtering — pre-filter count (approximated)
9
+ # (also Enumerable for iteration)
10
+ class SearchResults
11
+ include Enumerable
12
+
13
+ attr_reader :total, :total_before_filtering
14
+
15
+ def initialize(connection)
16
+ @total = connection.totalCount
17
+ # GraphQL does not expose a pre-filter count — use the same value.
18
+ @total_before_filtering = connection.totalCount
19
+ @nodes = connection.nodes
20
+ end
21
+
22
+ def each(&block)
23
+ @nodes.each(&block)
24
+ end
25
+
26
+ def empty?
27
+ @nodes.empty?
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,17 +1,17 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Compat
5
- end
6
- end
7
- end
8
- end
9
-
10
- require_relative 'compat/filter_translator'
11
- require_relative 'compat/stage_collection'
12
- require_relative 'compat/search_results'
13
- require_relative 'compat/page_reference'
14
- require_relative 'compat/response'
15
- require_relative 'compat/stage_view'
16
- require_relative 'compat/pages'
17
- require_relative 'compat/registers'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Compat
5
+ end
6
+ end
7
+ end
8
+ end
9
+
10
+ require_relative 'compat/filter_translator'
11
+ require_relative 'compat/stage_collection'
12
+ require_relative 'compat/search_results'
13
+ require_relative 'compat/page_reference'
14
+ require_relative 'compat/response'
15
+ require_relative 'compat/stage_view'
16
+ require_relative 'compat/pages'
17
+ require_relative 'compat/registers'
@@ -1,71 +1,71 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Concerns
5
- # Provides typed data field access on page models.
6
- # Include in Interface::BasePage so all concrete page classes inherit it.
7
- #
8
- # Exposes:
9
- # page.components — DataField::Collection (v2 compat alias for dataFields)
10
- # page.field_collection — same, memoized
11
- # page.data_fields_updates — [DataFieldInput, ...] for dirty fields
12
- # page.data_fields_additions — [DataFieldInput, ...] for added fields
13
- # page.data_fields_deletions — [field_id, ...] queued for deletion
14
- module DataFieldAccess
15
- # Returns a DataField::Collection wrapping raw dataFields from doc.
16
- # Memoized — mutating a field object persists across calls.
17
- def field_collection
18
- @field_collection ||= Base::Page::DataField::Collection.from_doc(raw_data_fields)
19
- end
20
-
21
- # v2 compat alias — eco-helpers scripts call entry.components
22
- def components
23
- field_collection
24
- end
25
-
26
- # Returns a SectionCollection wrapping sections from doc.
27
- # For BasicPage: doc['sections']. For PhasedPage: merged from stages (override in Phased).
28
- def section_collection
29
- @section_collection ||= Base::Page::SectionCollection.from_doc(raw_sections)
30
- end
31
-
32
- # v2 compat alias — eco-helpers scripts call entry.sections
33
- def sections
34
- section_collection
35
- end
36
-
37
- # Returns DataFieldInput hashes for modified existing fields (updates).
38
- def data_fields_updates
39
- field_collection.dirty_inputs
40
- end
41
-
42
- # Returns DataFieldInput hashes for newly added fields (via components.add).
43
- def data_fields_additions
44
- field_collection.dirty_additions
45
- end
46
-
47
- # Returns field IDs queued for deletion (via components.mark_for_deletion).
48
- def data_fields_deletions
49
- field_collection.dirty_deletions
50
- end
51
-
52
- def data_fields_dirty?
53
- field_collection.dirty?
54
- end
55
-
56
- private
57
-
58
- # Override in subclasses if fields live elsewhere (e.g. nested in stages).
59
- def raw_data_fields
60
- doc['dataFields'] || []
61
- end
62
-
63
- # Override in subclasses for different section sources.
64
- def raw_sections
65
- doc['sections'] || []
66
- end
67
- end
68
- end
69
- end
70
- end
71
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Concerns
5
+ # Provides typed data field access on page models.
6
+ # Include in Interface::BasePage so all concrete page classes inherit it.
7
+ #
8
+ # Exposes:
9
+ # page.components — DataField::Collection (v2 compat alias for dataFields)
10
+ # page.field_collection — same, memoized
11
+ # page.data_fields_updates — [DataFieldInput, ...] for dirty fields
12
+ # page.data_fields_additions — [DataFieldInput, ...] for added fields
13
+ # page.data_fields_deletions — [field_id, ...] queued for deletion
14
+ module DataFieldAccess
15
+ # Returns a DataField::Collection wrapping raw dataFields from doc.
16
+ # Memoized — mutating a field object persists across calls.
17
+ def field_collection
18
+ @field_collection ||= Base::Page::DataField::Collection.from_doc(raw_data_fields)
19
+ end
20
+
21
+ # v2 compat alias — eco-helpers scripts call entry.components
22
+ def components
23
+ field_collection
24
+ end
25
+
26
+ # Returns a SectionCollection wrapping sections from doc.
27
+ # For BasicPage: doc['sections']. For PhasedPage: merged from stages (override in Phased).
28
+ def section_collection
29
+ @section_collection ||= Base::Page::SectionCollection.from_doc(raw_sections)
30
+ end
31
+
32
+ # v2 compat alias — eco-helpers scripts call entry.sections
33
+ def sections
34
+ section_collection
35
+ end
36
+
37
+ # Returns DataFieldInput hashes for modified existing fields (updates).
38
+ def data_fields_updates
39
+ field_collection.dirty_inputs
40
+ end
41
+
42
+ # Returns DataFieldInput hashes for newly added fields (via components.add).
43
+ def data_fields_additions
44
+ field_collection.dirty_additions
45
+ end
46
+
47
+ # Returns field IDs queued for deletion (via components.mark_for_deletion).
48
+ def data_fields_deletions
49
+ field_collection.dirty_deletions
50
+ end
51
+
52
+ def data_fields_dirty?
53
+ field_collection.dirty?
54
+ end
55
+
56
+ private
57
+
58
+ # Override in subclasses if fields live elsewhere (e.g. nested in stages).
59
+ def raw_data_fields
60
+ doc['dataFields'] || []
61
+ end
62
+
63
+ # Override in subclasses for different section sources.
64
+ def raw_sections
65
+ doc['sections'] || []
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -1,68 +1,68 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Concerns
5
- module FragmentDefinitions
6
- class << self
7
- private
8
-
9
- def included(base)
10
- super
11
-
12
- base.send :include, Ecoportal::API::Common::GraphQL::ClassHelpers
13
- base.extend ClassMethods
14
- base.send :include, InstanceMethods
15
- end
16
- end
17
-
18
- module ClassMethods
19
- def fragment(sym, heredoc)
20
- fragments[sym] = heredoc
21
- end
22
-
23
- def fragments
24
- @fragments ||= {}
25
- end
26
-
27
- # Register a sub-namespace class whose fragments are visible via assemble.
28
- def register_namespace(klass)
29
- namespaces << klass
30
- end
31
-
32
- def namespaces
33
- @namespaces ||= []
34
- end
35
-
36
- # Returns concatenated fragment definition strings for the given symbols.
37
- # Searches own fragments and all registered sub-namespaces.
38
- def assemble(*syms)
39
- all = namespaces.reduce(fragments.dup) { |h, ns| h.merge(ns.fragments) }
40
- syms.map { |sym| all[sym] }.compact.join("\n\n")
41
- end
42
- end
43
-
44
- module InstanceMethods
45
- attr_reader :client, :fragments
46
-
47
- def initialize(client)
48
- @client = client
49
- parse
50
- end
51
-
52
- # Returns the raw fragment string for the given symbol.
53
- # The namespace parameter is retained for API compatibility but has no effect.
54
- def define(sym, heredoc, namespace: nil) # rubocop:disable Lint/UnusedMethodArgument
55
- heredoc
56
- end
57
-
58
- private
59
-
60
- def parse
61
- @fragments = self.class.fragments.dup
62
- end
63
- end
64
- end
65
- end
66
- end
67
- end
68
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Concerns
5
+ module FragmentDefinitions
6
+ class << self
7
+ private
8
+
9
+ def included(base)
10
+ super
11
+
12
+ base.send :include, Ecoportal::API::Common::GraphQL::ClassHelpers
13
+ base.extend ClassMethods
14
+ base.send :include, InstanceMethods
15
+ end
16
+ end
17
+
18
+ module ClassMethods
19
+ def fragment(sym, heredoc)
20
+ fragments[sym] = heredoc
21
+ end
22
+
23
+ def fragments
24
+ @fragments ||= {}
25
+ end
26
+
27
+ # Register a sub-namespace class whose fragments are visible via assemble.
28
+ def register_namespace(klass)
29
+ namespaces << klass
30
+ end
31
+
32
+ def namespaces
33
+ @namespaces ||= []
34
+ end
35
+
36
+ # Returns concatenated fragment definition strings for the given symbols.
37
+ # Searches own fragments and all registered sub-namespaces.
38
+ def assemble(*syms)
39
+ all = namespaces.reduce(fragments.dup) { |h, ns| h.merge(ns.fragments) }
40
+ syms.map { |sym| all[sym] }.compact.join("\n\n")
41
+ end
42
+ end
43
+
44
+ module InstanceMethods
45
+ attr_reader :client, :fragments
46
+
47
+ def initialize(client)
48
+ @client = client
49
+ parse
50
+ end
51
+
52
+ # Returns the raw fragment string for the given symbol.
53
+ # The namespace parameter is retained for API compatibility but has no effect.
54
+ def define(sym, heredoc, namespace: nil) # rubocop:disable Lint/UnusedMethodArgument
55
+ heredoc
56
+ end
57
+
58
+ private
59
+
60
+ def parse
61
+ @fragments = self.class.fragments.dup
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end