ecoportal-api-graphql 1.3.17 → 2.0.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 (466) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +384 -15
  3. data/LICENSE +21 -21
  4. data/README.md +24 -24
  5. data/lib/ecoportal/api/common/graphql/CLAUDE.md +36 -0
  6. data/lib/ecoportal/api/common/graphql/auth_service.rb +115 -115
  7. data/lib/ecoportal/api/common/graphql/class_helpers.rb +46 -46
  8. data/lib/ecoportal/api/common/graphql/client.rb +69 -69
  9. data/lib/ecoportal/api/common/graphql/hash_helpers.rb +105 -105
  10. data/lib/ecoportal/api/common/graphql/model/CLAUDE.md +28 -0
  11. data/lib/ecoportal/api/common/graphql/model/as_input.rb +54 -54
  12. data/lib/ecoportal/api/common/graphql/model/diffable/classic_diff_service.rb +49 -49
  13. data/lib/ecoportal/api/common/graphql/model/diffable/diff_service.rb +188 -188
  14. data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff.rb +55 -55
  15. data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff_nesting.rb +295 -295
  16. data/lib/ecoportal/api/common/graphql/model/diffable/leaf_diff_service.rb +97 -0
  17. data/lib/ecoportal/api/common/graphql/model/diffable.rb +1 -0
  18. data/lib/ecoportal/api/common/graphql/model.rb +17 -17
  19. data/lib/ecoportal/api/common/graphql/patches.rb +1 -1
  20. data/lib/ecoportal/api/common/graphql/query_integration.rb +45 -45
  21. data/lib/ecoportal/api/common/graphql.rb +16 -16
  22. data/lib/ecoportal/api/common.graphql.rb +8 -8
  23. data/lib/ecoportal/api/graphql/CLAUDE.md +37 -0
  24. data/lib/ecoportal/api/graphql/base/CLAUDE.md +50 -0
  25. data/lib/ecoportal/api/graphql/base/action.rb +1 -1
  26. data/lib/ecoportal/api/graphql/base/action_category.rb +15 -15
  27. data/lib/ecoportal/api/graphql/base/action_event.rb +23 -0
  28. data/lib/ecoportal/api/graphql/base/action_event_page.rb +16 -0
  29. data/lib/ecoportal/api/graphql/base/activity.rb +38 -0
  30. data/lib/ecoportal/api/graphql/base/activity_log.rb +38 -0
  31. data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +13 -8
  32. data/lib/ecoportal/api/graphql/base/auth_log.rb +24 -0
  33. data/lib/ecoportal/api/graphql/base/authorization_result.rb +20 -0
  34. data/lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb +17 -5
  35. data/lib/ecoportal/api/graphql/base/contractor_entity.rb +24 -24
  36. data/lib/ecoportal/api/graphql/base/date_time.rb +12 -12
  37. data/lib/ecoportal/api/graphql/base/delta_result.rb +16 -16
  38. data/lib/ecoportal/api/graphql/base/field.rb +12 -12
  39. data/lib/ecoportal/api/graphql/base/file_attachment.rb +15 -15
  40. data/lib/ecoportal/api/graphql/base/file_container.rb +12 -4
  41. data/lib/ecoportal/api/graphql/base/location_classification_type.rb +2 -0
  42. data/lib/ecoportal/api/graphql/base/location_node.rb +14 -14
  43. data/lib/ecoportal/api/graphql/base/location_structure/draft/structure.rb +37 -37
  44. data/lib/ecoportal/api/graphql/base/location_structure/draft.rb +93 -93
  45. data/lib/ecoportal/api/graphql/base/location_structure.rb +3 -0
  46. data/lib/ecoportal/api/graphql/base/minimal_dashboard.rb +25 -0
  47. data/lib/ecoportal/api/graphql/base/organization.rb +2 -0
  48. data/lib/ecoportal/api/graphql/base/page/data_field/actions_list.rb +9 -9
  49. data/lib/ecoportal/api/graphql/base/page/data_field/ai_summary.rb +18 -18
  50. data/lib/ecoportal/api/graphql/base/page/data_field/checklist.rb +29 -29
  51. data/lib/ecoportal/api/graphql/base/page/data_field/collection.rb +1 -1
  52. data/lib/ecoportal/api/graphql/base/page/data_field/contractor_entities.rb +25 -2
  53. data/lib/ecoportal/api/graphql/base/page/data_field/cross_reference.rb +1 -1
  54. data/lib/ecoportal/api/graphql/base/page/data_field/date_field.rb +23 -23
  55. data/lib/ecoportal/api/graphql/base/page/data_field/file_field.rb +46 -7
  56. data/lib/ecoportal/api/graphql/base/page/data_field/geo.rb +24 -24
  57. data/lib/ecoportal/api/graphql/base/page/data_field/image_gallery.rb +6 -3
  58. data/lib/ecoportal/api/graphql/base/page/data_field/law.rb +8 -8
  59. data/lib/ecoportal/api/graphql/base/page/data_field/mailbox.rb +9 -9
  60. data/lib/ecoportal/api/graphql/base/page/data_field/people.rb +50 -12
  61. data/lib/ecoportal/api/graphql/base/page/data_field/plain_text.rb +17 -17
  62. data/lib/ecoportal/api/graphql/base/page/data_field/rich_text.rb +26 -26
  63. data/lib/ecoportal/api/graphql/base/page/data_field/signature.rb +9 -9
  64. data/lib/ecoportal/api/graphql/base/page/data_field/smart_fill.rb +17 -17
  65. data/lib/ecoportal/api/graphql/base/page/data_field/table.rb +9 -9
  66. data/lib/ecoportal/api/graphql/base/page/data_field/tag_field.rb +21 -21
  67. data/lib/ecoportal/api/graphql/base/page/data_field.rb +12 -18
  68. data/lib/ecoportal/api/graphql/base/page/phased.rb +15 -15
  69. data/lib/ecoportal/api/graphql/base/page/section.rb +48 -48
  70. data/lib/ecoportal/api/graphql/base/page_info.rb +12 -12
  71. data/lib/ecoportal/api/graphql/base/pages_workflow/operation_interface.rb +39 -39
  72. data/lib/ecoportal/api/graphql/base/pages_workflow/operations/assign_to.rb +27 -27
  73. data/lib/ecoportal/api/graphql/base/pages_workflow/operations/send_notification.rb +30 -30
  74. data/lib/ecoportal/api/graphql/base/pages_workflow/recipient_config.rb +34 -34
  75. data/lib/ecoportal/api/graphql/base/pages_workflow.rb +35 -35
  76. data/lib/ecoportal/api/graphql/base/permissions.rb +15 -0
  77. data/lib/ecoportal/api/graphql/base/person_member.rb +22 -22
  78. data/lib/ecoportal/api/graphql/base/person_member_changelog.rb +23 -0
  79. data/lib/ecoportal/api/graphql/base/preset_view.rb +135 -0
  80. data/lib/ecoportal/api/graphql/base/preview_page.rb +23 -23
  81. data/lib/ecoportal/api/graphql/base/register.rb +6 -1
  82. data/lib/ecoportal/api/graphql/base/resource.rb +13 -13
  83. data/lib/ecoportal/api/graphql/base.rb +9 -0
  84. data/lib/ecoportal/api/graphql/builder/CLAUDE.md +65 -0
  85. data/lib/ecoportal/api/graphql/builder/action.rb +41 -41
  86. data/lib/ecoportal/api/graphql/builder/contractor_entity.rb +10 -0
  87. data/lib/ecoportal/api/graphql/builder/location_structure/draft.rb +64 -64
  88. data/lib/ecoportal/api/graphql/builder/location_structure.rb +40 -40
  89. data/lib/ecoportal/api/graphql/builder/page.rb +0 -16
  90. data/lib/ecoportal/api/graphql/builder/register/preset_view.rb +84 -84
  91. data/lib/ecoportal/api/graphql/builder/register.rb +49 -49
  92. data/lib/ecoportal/api/graphql/builder/template.rb +18 -0
  93. data/lib/ecoportal/api/graphql/compat/filter_translator.rb +1 -1
  94. data/lib/ecoportal/api/graphql/compat/page_reference.rb +23 -23
  95. data/lib/ecoportal/api/graphql/compat/pages.rb +7 -2
  96. data/lib/ecoportal/api/graphql/compat/registers.rb +84 -84
  97. data/lib/ecoportal/api/graphql/compat/response.rb +14 -0
  98. data/lib/ecoportal/api/graphql/compat/search_results.rb +33 -33
  99. data/lib/ecoportal/api/graphql/compat.rb +17 -17
  100. data/lib/ecoportal/api/graphql/concerns/data_field_access.rb +71 -71
  101. data/lib/ecoportal/api/graphql/concerns/fragment_definitions.rb +68 -68
  102. data/lib/ecoportal/api/graphql/concerns/snake_camel_access.rb +60 -60
  103. data/lib/ecoportal/api/graphql/concerns/threadable.rb +58 -0
  104. data/lib/ecoportal/api/graphql/concerns.rb +1 -0
  105. data/lib/ecoportal/api/graphql/connection/action.rb +1 -1
  106. data/lib/ecoportal/api/graphql/connection/action_category.rb +1 -1
  107. data/lib/ecoportal/api/graphql/connection/activity.rb +11 -0
  108. data/lib/ecoportal/api/graphql/connection/activity_log.rb +11 -0
  109. data/lib/ecoportal/api/graphql/connection/auth_log.rb +11 -0
  110. data/lib/ecoportal/api/graphql/connection/contractor_entity.rb +1 -1
  111. data/lib/ecoportal/api/graphql/connection/minimal_dashboard.rb +11 -0
  112. data/lib/ecoportal/api/graphql/connection/page.rb +1 -1
  113. data/lib/ecoportal/api/graphql/connection/pages_workflow_command.rb +1 -1
  114. data/lib/ecoportal/api/graphql/connection/person_member.rb +1 -1
  115. data/lib/ecoportal/api/graphql/connection/person_member_changelog.rb +11 -0
  116. data/lib/ecoportal/api/graphql/connection/preset_view.rb +11 -11
  117. data/lib/ecoportal/api/graphql/connection/preview_page.rb +1 -1
  118. data/lib/ecoportal/api/graphql/connection.rb +5 -0
  119. data/lib/ecoportal/api/graphql/diff/pairing/signals.rb +21 -1
  120. data/lib/ecoportal/api/graphql/error/locations_error/fetch_nested.rb +51 -51
  121. data/lib/ecoportal/api/graphql/error/locations_error.rb +28 -28
  122. data/lib/ecoportal/api/graphql/error/locations_validation_error.rb +20 -20
  123. data/lib/ecoportal/api/graphql/error/validation_errors.rb +28 -28
  124. data/lib/ecoportal/api/graphql/error.rb +12 -12
  125. data/lib/ecoportal/api/graphql/file_upload/client.rb +198 -139
  126. data/lib/ecoportal/api/graphql/file_upload.rb +10 -10
  127. data/lib/ecoportal/api/graphql/fragment/action.rb +65 -65
  128. data/lib/ecoportal/api/graphql/fragment/action_category.rb +17 -17
  129. data/lib/ecoportal/api/graphql/fragment/activity.rb +84 -0
  130. data/lib/ecoportal/api/graphql/fragment/activity_log.rb +75 -0
  131. data/lib/ecoportal/api/graphql/fragment/auth_log.rb +29 -0
  132. data/lib/ecoportal/api/graphql/fragment/authorization_result.rb +14 -0
  133. data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +20 -20
  134. data/lib/ecoportal/api/graphql/fragment/location_node.rb +1 -0
  135. data/lib/ecoportal/api/graphql/fragment/locations_error.rb +19 -19
  136. data/lib/ecoportal/api/graphql/fragment/minimal_dashboard.rb +31 -0
  137. data/lib/ecoportal/api/graphql/fragment/pages/common_page_union.rb +21 -0
  138. data/lib/ecoportal/api/graphql/fragment/pages.rb +15 -15
  139. data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -17
  140. data/lib/ecoportal/api/graphql/fragment/permissions.rb +98 -0
  141. data/lib/ecoportal/api/graphql/fragment/person_member_changelog.rb +33 -0
  142. data/lib/ecoportal/api/graphql/fragment.rb +7 -0
  143. data/lib/ecoportal/api/graphql/helpers/locations_tree.rb +41 -41
  144. data/lib/ecoportal/api/graphql/helpers.rb +10 -10
  145. data/lib/ecoportal/api/graphql/input/action/archive.rb +14 -14
  146. data/lib/ecoportal/api/graphql/input/action/create.rb +13 -13
  147. data/lib/ecoportal/api/graphql/input/action/update.rb +12 -0
  148. data/lib/ecoportal/api/graphql/input/action.rb +14 -14
  149. data/lib/ecoportal/api/graphql/input/contractor_entity/create.rb +14 -14
  150. data/lib/ecoportal/api/graphql/input/contractor_entity/destroy.rb +13 -13
  151. data/lib/ecoportal/api/graphql/input/contractor_entity/manager_settings.rb +20 -0
  152. data/lib/ecoportal/api/graphql/input/contractor_entity/update.rb +6 -27
  153. data/lib/ecoportal/api/graphql/input/contractor_entity.rb +1 -0
  154. data/lib/ecoportal/api/graphql/input/date_range.rb +16 -0
  155. data/lib/ecoportal/api/graphql/input/delta_input.rb +16 -16
  156. data/lib/ecoportal/api/graphql/input/id_diff.rb +11 -11
  157. data/lib/ecoportal/api/graphql/input/location_structure/apply_commands.rb +2 -2
  158. data/lib/ecoportal/api/graphql/input/location_structure/archive_command.rb +13 -13
  159. data/lib/ecoportal/api/graphql/input/location_structure/delete_command.rb +13 -13
  160. data/lib/ecoportal/api/graphql/input/location_structure/draft/add_commands.rb +2 -2
  161. data/lib/ecoportal/api/graphql/input/location_structure/draft/create.rb +15 -15
  162. data/lib/ecoportal/api/graphql/input/location_structure/draft/delete.rb +15 -15
  163. data/lib/ecoportal/api/graphql/input/location_structure/draft/drop_bad_commands.rb +16 -16
  164. data/lib/ecoportal/api/graphql/input/location_structure/draft/publish.rb +16 -16
  165. data/lib/ecoportal/api/graphql/input/location_structure/draft.rb +19 -19
  166. data/lib/ecoportal/api/graphql/input/location_structure/insert_command.rb +13 -13
  167. data/lib/ecoportal/api/graphql/input/location_structure/move_command.rb +14 -14
  168. data/lib/ecoportal/api/graphql/input/location_structure/reorder_command.rb +13 -13
  169. data/lib/ecoportal/api/graphql/input/location_structure/unarchive_command.rb +13 -13
  170. data/lib/ecoportal/api/graphql/input/location_structure/update_command.rb +6 -2
  171. data/lib/ecoportal/api/graphql/input/location_structure.rb +20 -20
  172. data/lib/ecoportal/api/graphql/input/page/archive.rb +14 -14
  173. data/lib/ecoportal/api/graphql/input/page/build_from_template.rb +13 -13
  174. data/lib/ecoportal/api/graphql/input/page/create_draft.rb +13 -13
  175. data/lib/ecoportal/api/graphql/input/page/create_from_template.rb +18 -18
  176. data/lib/ecoportal/api/graphql/input/page/delete_draft.rb +13 -13
  177. data/lib/ecoportal/api/graphql/input/page/publish_draft.rb +13 -13
  178. data/lib/ecoportal/api/graphql/input/page/review_task.rb +14 -14
  179. data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -14
  180. data/lib/ecoportal/api/graphql/input/page/update.rb +2 -2
  181. data/lib/ecoportal/api/graphql/input/page.rb +26 -26
  182. data/lib/ecoportal/api/graphql/input/preset_view/create.rb +18 -18
  183. data/lib/ecoportal/api/graphql/input/preset_view/permission.rb +16 -16
  184. data/lib/ecoportal/api/graphql/input/preset_view/update.rb +17 -2
  185. data/lib/ecoportal/api/graphql/input/preset_view.rb +14 -14
  186. data/lib/ecoportal/api/graphql/input/register/create.rb +18 -18
  187. data/lib/ecoportal/api/graphql/input/register/update.rb +15 -15
  188. data/lib/ecoportal/api/graphql/input/register.rb +13 -13
  189. data/lib/ecoportal/api/graphql/input/search.rb +13 -13
  190. data/lib/ecoportal/api/graphql/input/search_conf/ai_generator.rb +234 -234
  191. data/lib/ecoportal/api/graphql/input/search_conf.rb +1 -1
  192. data/lib/ecoportal/api/graphql/input/search_filter.rb +12 -12
  193. data/lib/ecoportal/api/graphql/input/search_sorter.rb +11 -11
  194. data/lib/ecoportal/api/graphql/input/workflow_command/add_action_tag.rb +18 -18
  195. data/lib/ecoportal/api/graphql/input/workflow_command/add_binding.rb +18 -18
  196. data/lib/ecoportal/api/graphql/input/workflow_command/add_checklist_field_item.rb +19 -0
  197. data/lib/ecoportal/api/graphql/input/workflow_command/add_comment_tagging_user_group.rb +18 -18
  198. data/lib/ecoportal/api/graphql/input/workflow_command/add_default_direct_strategy_user.rb +18 -18
  199. data/lib/ecoportal/api/graphql/input/workflow_command/add_default_strategy.rb +18 -18
  200. data/lib/ecoportal/api/graphql/input/workflow_command/add_direct_strategy_user.rb +18 -18
  201. data/lib/ecoportal/api/graphql/input/workflow_command/add_force.rb +18 -18
  202. data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_field_config.rb +23 -23
  203. data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_helper.rb +18 -18
  204. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation.rb +18 -18
  205. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_direct_strategy_user.rb +18 -18
  206. data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_strategy.rb +18 -18
  207. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_action_type.rb +18 -18
  208. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_filter.rb +18 -18
  209. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_people_field.rb +18 -18
  210. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_task_config.rb +18 -18
  211. data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_user.rb +18 -18
  212. data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback.rb +23 -23
  213. data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback_action.rb +18 -18
  214. data/lib/ecoportal/api/graphql/input/workflow_command/add_section.rb +18 -18
  215. data/lib/ecoportal/api/graphql/input/workflow_command/add_select_field_option.rb +19 -19
  216. data/lib/ecoportal/api/graphql/input/workflow_command/add_smart_fill_config.rb +23 -0
  217. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage.rb +3 -2
  218. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_section.rb +18 -18
  219. data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_tag.rb +18 -18
  220. data/lib/ecoportal/api/graphql/input/workflow_command/add_strategy.rb +18 -18
  221. data/lib/ecoportal/api/graphql/input/workflow_command/add_task.rb +18 -18
  222. data/lib/ecoportal/api/graphql/input/workflow_command/add_task_assignment_user_group.rb +18 -18
  223. data/lib/ecoportal/api/graphql/input/workflow_command/add_viewable_field.rb +45 -0
  224. data/lib/ecoportal/api/graphql/input/workflow_command/add_workflow_callback.rb +18 -18
  225. data/lib/ecoportal/api/graphql/input/workflow_command/archive_public_config.rb +19 -0
  226. data/lib/ecoportal/api/graphql/input/workflow_command/collapse_section.rb +18 -18
  227. data/lib/ecoportal/api/graphql/input/workflow_command/create_public_config.rb +19 -0
  228. data/lib/ecoportal/api/graphql/input/workflow_command/edit_binding.rb +18 -18
  229. data/lib/ecoportal/api/graphql/input/workflow_command/edit_checklist_field_item.rb +19 -0
  230. data/lib/ecoportal/api/graphql/input/workflow_command/edit_creator_permissions.rb +18 -18
  231. data/lib/ecoportal/api/graphql/input/workflow_command/edit_default_strategy.rb +18 -18
  232. data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +12 -2
  233. data/lib/ecoportal/api/graphql/input/workflow_command/edit_force.rb +18 -18
  234. data/lib/ecoportal/api/graphql/input/workflow_command/edit_gauge_field_stop.rb +19 -19
  235. data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_field_config.rb +19 -19
  236. data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_helper.rb +18 -18
  237. data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation.rb +18 -18
  238. data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation_strategy.rb +18 -18
  239. data/lib/ecoportal/api/graphql/input/workflow_command/edit_public_config.rb +19 -0
  240. data/lib/ecoportal/api/graphql/input/workflow_command/edit_reminder.rb +18 -18
  241. data/lib/ecoportal/api/graphql/input/workflow_command/edit_required_sign_offs.rb +18 -18
  242. data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_comment_tagging.rb +18 -18
  243. data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_task_assignment.rb +18 -18
  244. data/lib/ecoportal/api/graphql/input/workflow_command/edit_scheduled_callback.rb +22 -22
  245. data/lib/ecoportal/api/graphql/input/workflow_command/edit_section_header.rb +18 -18
  246. data/lib/ecoportal/api/graphql/input/workflow_command/edit_select_field_option.rb +19 -19
  247. data/lib/ecoportal/api/graphql/input/workflow_command/edit_smart_fill_config.rb +21 -0
  248. data/lib/ecoportal/api/graphql/input/workflow_command/edit_stage.rb +18 -18
  249. data/lib/ecoportal/api/graphql/input/workflow_command/edit_strategy.rb +18 -18
  250. data/lib/ecoportal/api/graphql/input/workflow_command/edit_task_due.rb +18 -18
  251. data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_advanced_settings.rb +19 -0
  252. data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_basic_settings.rb +27 -0
  253. data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_container_uid.rb +45 -0
  254. data/lib/ecoportal/api/graphql/input/workflow_command/{edit_page_creator_permissions.rb → edit_template_creator_permissions.rb} +3 -2
  255. data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_descriptions.rb +19 -0
  256. data/lib/ecoportal/api/graphql/input/workflow_command/edit_trigger.rb +18 -18
  257. data/lib/ecoportal/api/graphql/input/workflow_command/expand_section.rb +18 -18
  258. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/action_list.rb +31 -0
  259. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/contractor_entities.rb +24 -24
  260. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +3 -1
  261. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/date.rb +15 -2
  262. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/file.rb +21 -0
  263. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/gauge.rb +20 -20
  264. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/image_gallery.rb +3 -2
  265. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/location_field.rb +24 -24
  266. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/people.rb +27 -3
  267. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +3 -2
  268. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/rich_text.rb +3 -2
  269. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/select.rb +3 -2
  270. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/signature.rb +20 -20
  271. data/lib/ecoportal/api/graphql/input/workflow_command/field_config/table.rb +25 -25
  272. data/lib/ecoportal/api/graphql/input/workflow_command/move_field.rb +3 -2
  273. data/lib/ecoportal/api/graphql/input/workflow_command/move_stage.rb +18 -18
  274. data/lib/ecoportal/api/graphql/input/workflow_command/move_viewable_field.rb +33 -0
  275. data/lib/ecoportal/api/graphql/input/workflow_command/remove_action_tag.rb +18 -18
  276. data/lib/ecoportal/api/graphql/input/workflow_command/remove_binding.rb +18 -18
  277. data/lib/ecoportal/api/graphql/input/workflow_command/remove_callback.rb +18 -18
  278. data/lib/ecoportal/api/graphql/input/workflow_command/remove_checklist_field_item.rb +19 -0
  279. data/lib/ecoportal/api/graphql/input/workflow_command/remove_comment_tagging_user_group.rb +18 -18
  280. data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_direct_strategy_user.rb +18 -18
  281. data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_strategy.rb +18 -18
  282. data/lib/ecoportal/api/graphql/input/workflow_command/remove_direct_strategy_user.rb +18 -18
  283. data/lib/ecoportal/api/graphql/input/workflow_command/remove_field.rb +18 -18
  284. data/lib/ecoportal/api/graphql/input/workflow_command/remove_force.rb +18 -18
  285. data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_helper.rb +18 -18
  286. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation.rb +18 -18
  287. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_direct_strategy_user.rb +18 -18
  288. data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_strategy.rb +18 -18
  289. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_action_type.rb +18 -18
  290. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_filter.rb +18 -18
  291. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_people_field.rb +18 -18
  292. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_task_config.rb +18 -18
  293. data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_user.rb +18 -18
  294. data/lib/ecoportal/api/graphql/input/workflow_command/remove_scheduled_callback.rb +18 -18
  295. data/lib/ecoportal/api/graphql/input/workflow_command/remove_section.rb +18 -18
  296. data/lib/ecoportal/api/graphql/input/workflow_command/remove_smart_fill_config.rb +19 -0
  297. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage.rb +18 -18
  298. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_section.rb +18 -18
  299. data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_tag.rb +18 -18
  300. data/lib/ecoportal/api/graphql/input/workflow_command/remove_strategy.rb +18 -18
  301. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task.rb +18 -18
  302. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_assignment_user_group.rb +18 -18
  303. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_due.rb +18 -18
  304. data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_priority_level.rb +18 -18
  305. data/lib/ecoportal/api/graphql/input/workflow_command/remove_viewable_field.rb +21 -0
  306. data/lib/ecoportal/api/graphql/input/workflow_command/reorder_forces.rb +3 -2
  307. data/lib/ecoportal/api/graphql/input/workflow_command/reorder_section.rb +3 -2
  308. data/lib/ecoportal/api/graphql/input/workflow_command.rb +43 -5
  309. data/lib/ecoportal/api/graphql/input.rb +1 -0
  310. data/lib/ecoportal/api/graphql/interface/base_page.rb +36 -3
  311. data/lib/ecoportal/api/graphql/interface/location_structure/command.rb +2 -1
  312. data/lib/ecoportal/api/graphql/interface/location_structure/node.rb +43 -43
  313. data/lib/ecoportal/api/graphql/interface/location_structure.rb +14 -14
  314. data/lib/ecoportal/api/graphql/interface.rb +11 -11
  315. data/lib/ecoportal/api/graphql/logic/base_model.rb +15 -15
  316. data/lib/ecoportal/api/graphql/logic/base_query.rb +193 -193
  317. data/lib/ecoportal/api/graphql/logic/connection.rb +17 -0
  318. data/lib/ecoportal/api/graphql/logic/input.rb +127 -0
  319. data/lib/ecoportal/api/graphql/logic/mutation.rb +59 -59
  320. data/lib/ecoportal/api/graphql/logic/payload.rb +42 -42
  321. data/lib/ecoportal/api/graphql/logic/query.rb +23 -23
  322. data/lib/ecoportal/api/graphql/logic/query_array.rb +30 -30
  323. data/lib/ecoportal/api/graphql/logic/query_connection.rb +48 -48
  324. data/lib/ecoportal/api/graphql/logic.rb +18 -18
  325. data/lib/ecoportal/api/graphql/model/account.rb +15 -15
  326. data/lib/ecoportal/api/graphql/model/action.rb +22 -22
  327. data/lib/ecoportal/api/graphql/model/action_event.rb +14 -0
  328. data/lib/ecoportal/api/graphql/model/action_event_page.rb +10 -0
  329. data/lib/ecoportal/api/graphql/model/activity.rb +14 -0
  330. data/lib/ecoportal/api/graphql/model/activity_log.rb +31 -0
  331. data/lib/ecoportal/api/graphql/model/ai_summary_version.rb +10 -10
  332. data/lib/ecoportal/api/graphql/model/auth_log.rb +11 -0
  333. data/lib/ecoportal/api/graphql/model/authorization_result.rb +12 -0
  334. data/lib/ecoportal/api/graphql/model/contractor_entity.rb +12 -12
  335. data/lib/ecoportal/api/graphql/model/field.rb +10 -10
  336. data/lib/ecoportal/api/graphql/model/file_attachment.rb +10 -10
  337. data/lib/ecoportal/api/graphql/model/file_container.rb +11 -11
  338. data/lib/ecoportal/api/graphql/model/location_node.rb +14 -14
  339. data/lib/ecoportal/api/graphql/model/location_structure/draft/structure.rb +15 -15
  340. data/lib/ecoportal/api/graphql/model/location_structure/draft.rb +15 -15
  341. data/lib/ecoportal/api/graphql/model/location_structure.rb +16 -16
  342. data/lib/ecoportal/api/graphql/model/minimal_dashboard.rb +14 -0
  343. data/lib/ecoportal/api/graphql/model/organization.rb +27 -0
  344. data/lib/ecoportal/api/graphql/model/page/basic.rb +14 -14
  345. data/lib/ecoportal/api/graphql/model/page/data_field.rb +12 -12
  346. data/lib/ecoportal/api/graphql/model/page/phased/stage.rb +14 -14
  347. data/lib/ecoportal/api/graphql/model/page/section.rb +12 -12
  348. data/lib/ecoportal/api/graphql/model/page_union.rb +21 -21
  349. data/lib/ecoportal/api/graphql/model/pages_workflow.rb +20 -20
  350. data/lib/ecoportal/api/graphql/model/permissions.rb +179 -0
  351. data/lib/ecoportal/api/graphql/model/person_member.rb +7 -0
  352. data/lib/ecoportal/api/graphql/model/person_member_changelog.rb +15 -0
  353. data/lib/ecoportal/api/graphql/model/preset_view.rb +10 -10
  354. data/lib/ecoportal/api/graphql/model/preview_page.rb +10 -10
  355. data/lib/ecoportal/api/graphql/model/register.rb +10 -10
  356. data/lib/ecoportal/api/graphql/model/resource.rb +13 -13
  357. data/lib/ecoportal/api/graphql/model/user.rb +14 -14
  358. data/lib/ecoportal/api/graphql/model.rb +9 -0
  359. data/lib/ecoportal/api/graphql/mutation/action/archive.rb +41 -41
  360. data/lib/ecoportal/api/graphql/mutation/action/create.rb +40 -40
  361. data/lib/ecoportal/api/graphql/mutation/action/update.rb +40 -40
  362. data/lib/ecoportal/api/graphql/mutation/action.rb +14 -14
  363. data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +21 -11
  364. data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +26 -11
  365. data/lib/ecoportal/api/graphql/mutation/ai_summary.rb +13 -13
  366. data/lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb +40 -40
  367. data/lib/ecoportal/api/graphql/mutation/contractor_entity/destroy.rb +40 -40
  368. data/lib/ecoportal/api/graphql/mutation/contractor_entity/update.rb +40 -40
  369. data/lib/ecoportal/api/graphql/mutation/contractor_entity/update_manager_settings.rb +37 -0
  370. data/lib/ecoportal/api/graphql/mutation/contractor_entity.rb +1 -0
  371. data/lib/ecoportal/api/graphql/mutation/file_container/upload.rb +78 -0
  372. data/lib/ecoportal/api/graphql/mutation/file_container.rb +15 -0
  373. data/lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb +54 -54
  374. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/add_commands.rb +55 -55
  375. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/create.rb +54 -54
  376. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/delete.rb +43 -43
  377. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/drop_bad_commands.rb +56 -56
  378. data/lib/ecoportal/api/graphql/mutation/location_structure/draft/publish.rb +66 -66
  379. data/lib/ecoportal/api/graphql/mutation/location_structure/draft.rb +18 -18
  380. data/lib/ecoportal/api/graphql/mutation/location_structure.rb +13 -13
  381. data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +1 -1
  382. data/lib/ecoportal/api/graphql/mutation/page/archive.rb +40 -40
  383. data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +1 -1
  384. data/lib/ecoportal/api/graphql/mutation/page/build_from_template.rb +50 -50
  385. data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +1 -1
  386. data/lib/ecoportal/api/graphql/mutation/page/create_from_template.rb +43 -43
  387. data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +1 -1
  388. data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +1 -1
  389. data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +1 -1
  390. data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +1 -1
  391. data/lib/ecoportal/api/graphql/mutation/page/unarchive.rb +40 -40
  392. data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +1 -1
  393. data/lib/ecoportal/api/graphql/mutation/page/update.rb +40 -40
  394. data/lib/ecoportal/api/graphql/mutation/page.rb +28 -28
  395. data/lib/ecoportal/api/graphql/mutation/preset_view/create.rb +35 -35
  396. data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +1 -1
  397. data/lib/ecoportal/api/graphql/mutation/preset_view/permission.rb +37 -37
  398. data/lib/ecoportal/api/graphql/mutation/preset_view/update.rb +35 -35
  399. data/lib/ecoportal/api/graphql/mutation/preset_view.rb +15 -15
  400. data/lib/ecoportal/api/graphql/mutation/register/create.rb +35 -35
  401. data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +1 -1
  402. data/lib/ecoportal/api/graphql/mutation/register/update.rb +35 -35
  403. data/lib/ecoportal/api/graphql/mutation/register.rb +14 -14
  404. data/lib/ecoportal/api/graphql/mutation/template/update_related_page.rb +79 -0
  405. data/lib/ecoportal/api/graphql/mutation/template.rb +1 -0
  406. data/lib/ecoportal/api/graphql/mutation.rb +1 -1
  407. data/lib/ecoportal/api/graphql/payload/action/archive.rb +13 -13
  408. data/lib/ecoportal/api/graphql/payload/action/create.rb +13 -13
  409. data/lib/ecoportal/api/graphql/payload/action/update.rb +13 -13
  410. data/lib/ecoportal/api/graphql/payload/action.rb +14 -14
  411. data/lib/ecoportal/api/graphql/payload/ai_summary_generate.rb +12 -12
  412. data/lib/ecoportal/api/graphql/payload/contractor_entity/create.rb +13 -13
  413. data/lib/ecoportal/api/graphql/payload/contractor_entity/destroy.rb +12 -12
  414. data/lib/ecoportal/api/graphql/payload/contractor_entity/manager_settings.rb +20 -0
  415. data/lib/ecoportal/api/graphql/payload/contractor_entity/update.rb +12 -12
  416. data/lib/ecoportal/api/graphql/payload/contractor_entity.rb +1 -0
  417. data/lib/ecoportal/api/graphql/payload/location_structure/apply_commands.rb +51 -51
  418. data/lib/ecoportal/api/graphql/payload/location_structure/command_execution_result.rb +50 -50
  419. data/lib/ecoportal/api/graphql/payload/location_structure/draft/add_commands.rb +30 -30
  420. data/lib/ecoportal/api/graphql/payload/location_structure/draft/delete.rb +30 -30
  421. data/lib/ecoportal/api/graphql/payload/location_structure/draft/drop_bad_commands.rb +43 -43
  422. data/lib/ecoportal/api/graphql/payload/location_structure/draft/publish.rb +63 -63
  423. data/lib/ecoportal/api/graphql/payload/location_structure/draft.rb +18 -18
  424. data/lib/ecoportal/api/graphql/payload/location_structure.rb +14 -14
  425. data/lib/ecoportal/api/graphql/payload/ok_payload.rb +1 -1
  426. data/lib/ecoportal/api/graphql/payload/page/archive.rb +13 -13
  427. data/lib/ecoportal/api/graphql/payload/page/build_from_template.rb +13 -13
  428. data/lib/ecoportal/api/graphql/payload/page/create_from_template.rb +13 -13
  429. data/lib/ecoportal/api/graphql/payload/page/draft.rb +1 -1
  430. data/lib/ecoportal/api/graphql/payload/page/review_task.rb +1 -1
  431. data/lib/ecoportal/api/graphql/payload/page/unarchive.rb +13 -13
  432. data/lib/ecoportal/api/graphql/payload/page/update.rb +13 -13
  433. data/lib/ecoportal/api/graphql/payload/preset_view.rb +1 -1
  434. data/lib/ecoportal/api/graphql/payload/register.rb +1 -1
  435. data/lib/ecoportal/api/graphql/payload/template/update_related_page.rb +15 -0
  436. data/lib/ecoportal/api/graphql/payload/template.rb +1 -0
  437. data/lib/ecoportal/api/graphql/payload/upload.rb +12 -0
  438. data/lib/ecoportal/api/graphql/payload.rb +1 -0
  439. data/lib/ecoportal/api/graphql/query/action.rb +33 -33
  440. data/lib/ecoportal/api/graphql/query/action_categories.rb +53 -53
  441. data/lib/ecoportal/api/graphql/query/actions.rb +43 -43
  442. data/lib/ecoportal/api/graphql/query/activity_logs.rb +78 -0
  443. data/lib/ecoportal/api/graphql/query/auth_logs.rb +51 -0
  444. data/lib/ecoportal/api/graphql/query/contractor_entities.rb +53 -53
  445. data/lib/ecoportal/api/graphql/query/dashboard_search.rb +57 -0
  446. data/lib/ecoportal/api/graphql/query/file_upload_signature.rb +76 -76
  447. data/lib/ecoportal/api/graphql/query/location_classifications.rb +39 -39
  448. data/lib/ecoportal/api/graphql/query/location_structure.rb +2 -0
  449. data/lib/ecoportal/api/graphql/query/location_structures.rb +2 -0
  450. data/lib/ecoportal/api/graphql/query/page.rb +6 -1
  451. data/lib/ecoportal/api/graphql/query/page_activities.rb +56 -0
  452. data/lib/ecoportal/api/graphql/query/page_delta.rb +47 -47
  453. data/lib/ecoportal/api/graphql/query/pages.rb +59 -59
  454. data/lib/ecoportal/api/graphql/query/permissions.rb +35 -0
  455. data/lib/ecoportal/api/graphql/query/person_member_changelogs.rb +53 -0
  456. data/lib/ecoportal/api/graphql/query/register_preset_views.rb +1 -1
  457. data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -83
  458. data/lib/ecoportal/api/graphql/query/templates.rb +53 -53
  459. data/lib/ecoportal/api/graphql/query.rb +6 -0
  460. data/lib/ecoportal/api/graphql_version.rb +1 -1
  461. data/lib/ecoportal/api-graphql.rb +10 -10
  462. metadata +78 -12
  463. data/lib/ecoportal/api/graphql/input/workflow_command/edit_page.rb +0 -28
  464. data/lib/ecoportal/api/graphql/mutation/smart_fill/generate.rb +0 -36
  465. data/lib/ecoportal/api/graphql/mutation/smart_fill/submit_feedback.rb +0 -40
  466. data/lib/ecoportal/api/graphql/mutation/smart_fill.rb +0 -13
@@ -5,6 +5,133 @@ module Ecoportal
5
5
  class Input < Logic::BaseModel
6
6
  passthrough :clientMutationId
7
7
 
8
+ # Declarative set-diff macro for id-list fields that the schema exposes as
9
+ # `IdDiffInput { additions: [ID!], removals: [ID!] }` on the *update* mutation.
10
+ #
11
+ # Mixed into any Input class (whether it inherits from {Logic::Input} or from a
12
+ # `Base::` data model) via `extend`. {Logic::Input} extends it for its own subclasses;
13
+ # data-model Input classes call `extend Logic::Input::IdDiffFields` explicitly.
14
+ #
15
+ # Usage:
16
+ # class Update < Base::ContractorEntity
17
+ # extend Logic::Input::IdDiffFields
18
+ # id_diff_fields :associatedPeopleIds, :leadContractorIds
19
+ # end
20
+ #
21
+ # It installs (or augments) a `from_model` that, for each declared field, computes the
22
+ # delta DIRECTLY from the READ model's `doc[key]` vs `original_doc[key]` arrays:
23
+ # additions = current - original
24
+ # removals = original - current
25
+ # A field is omitted when unchanged. The delta is computed directly (NOT via the
26
+ # cascaded DiffService) because these array fields are dropped from the flat diff and
27
+ # the read model is `root!` (so its doc/original_doc resolve without cascade side effects).
28
+ module IdDiffFields
29
+ # @return [Array<Symbol>] the fields declared for set-diff on this class.
30
+ def id_diff_fields_list
31
+ @id_diff_fields_list ||= []
32
+ end
33
+
34
+ # Declares the id-list fields that must be reshaped into IdDiff `{ additions:, removals: }`.
35
+ # @param fields [Array<Symbol>] field names (as they appear in the read model's doc).
36
+ # @return [void]
37
+ def id_diff_fields(*fields)
38
+ id_diff_fields_list.concat(fields.flatten.map(&:to_sym)).uniq!
39
+ end
40
+
41
+ # Computes the IdDiff-shaped deltas for the declared fields and merges them into +diff+.
42
+ # @param model [Common::GraphQL::Model] the subject (read) model.
43
+ # @param diff [Hash, nil] the base mutation input hash to augment (may be nil).
44
+ # @return [Hash, nil] +diff+ with per-field `{ additions:, removals: }` merged in,
45
+ # or the original value when nothing changed.
46
+ def merge_id_diffs(model, diff)
47
+ id_diff_fields_list.each do |field|
48
+ key = field.to_s
49
+ current = Array(model.doc[key])
50
+ original = Array(model.original_doc[key])
51
+ next if current == original
52
+
53
+ diff ||= {}
54
+ diff[:id] ||= model.id if model.respond_to?(:id)
55
+ diff[field] = { additions: current - original, removals: original - current }
56
+ end
57
+ diff
58
+ end
59
+
60
+ # Reshaping `from_model`: base diff (via {Logic::Input.from_model}) + set-diff deltas.
61
+ # @param model [Common::GraphQL::Model] the subject model.
62
+ # @return [Hash, nil] the mutation input hash, or nil when there are no changes.
63
+ def from_model(model, **kargs)
64
+ diff = Logic::Input.from_model(model, **kargs)
65
+ merge_id_diffs(model, diff)
66
+ end
67
+ end
68
+
69
+ # Declarative FULL-ARRAY macro for id-list fields that the schema exposes as a plain
70
+ # `[ID!]` on the *update* mutation (NOT `IdDiffInput`). The server expects the COMPLETE
71
+ # current array, replacing the stored value wholesale — there is no additions/removals
72
+ # delta shape. This is the counterpart to {IdDiffFields}.
73
+ #
74
+ # Mixed into any Input class via `extend`, exactly like {IdDiffFields}. Data-model Input
75
+ # classes call `extend Logic::Input::FullArrayFields` explicitly.
76
+ #
77
+ # Usage:
78
+ # class Update < Base::Action
79
+ # extend Logic::Input::FullArrayFields
80
+ # full_array_fields :assignedPersonMemberIds, :locationIds, :fileContainerIds
81
+ # end
82
+ #
83
+ # It installs (or augments) a `from_model` that, for each declared field, emits the FULL
84
+ # current array taken DIRECTLY from the READ model's `doc[key]` whenever it differs from
85
+ # `original_doc[key]`. A field is omitted when unchanged. The value is read directly (NOT
86
+ # via the cascaded DiffService) because these array fields are dropped from the flat diff
87
+ # and the read model is `root!`.
88
+ #
89
+ # Schema evidence (live introspection 20260605, UpdateActionInput):
90
+ # assignedPersonMemberIds : [ID!]
91
+ # locationIds : [ID!]
92
+ # fileContainerIds : [ID!]
93
+ # None are `IdDiffInput` — hence full-array, not delta.
94
+ module FullArrayFields
95
+ # @return [Array<Symbol>] the fields declared for full-array emission on this class.
96
+ def full_array_fields_list
97
+ @full_array_fields_list ||= []
98
+ end
99
+
100
+ # Declares the id-list fields that must be emitted as their COMPLETE current array.
101
+ # @param fields [Array<Symbol>] field names (as they appear in the read model's doc).
102
+ # @return [void]
103
+ def full_array_fields(*fields)
104
+ full_array_fields_list.concat(fields.flatten.map(&:to_sym)).uniq!
105
+ end
106
+
107
+ # Emits the full current array for each changed declared field and merges it into +diff+.
108
+ # @param model [Common::GraphQL::Model] the subject (read) model.
109
+ # @param diff [Hash, nil] the base mutation input hash to augment (may be nil).
110
+ # @return [Hash, nil] +diff+ with per-field full arrays merged in, or the original
111
+ # value when nothing changed.
112
+ def merge_full_arrays(model, diff)
113
+ full_array_fields_list.each do |field|
114
+ key = field.to_s
115
+ current = Array(model.doc[key])
116
+ original = Array(model.original_doc[key])
117
+ next if current == original
118
+
119
+ diff ||= {}
120
+ diff[:id] ||= model.id if model.respond_to?(:id)
121
+ diff[field] = current
122
+ end
123
+ diff
124
+ end
125
+
126
+ # Reshaping `from_model`: base diff (via {Logic::Input.from_model}) + full arrays.
127
+ # @param model [Common::GraphQL::Model] the subject model.
128
+ # @return [Hash, nil] the mutation input hash, or nil when there are no changes.
129
+ def from_model(model, **kargs)
130
+ diff = Logic::Input.from_model(model, **kargs)
131
+ merge_full_arrays(model, diff)
132
+ end
133
+ end
134
+
8
135
  class << self
9
136
  # Builds a mutation input hash from a model's diff.
10
137
  # Subclasses override this to reshape fields (e.g. array → IdDiffInput).
@@ -1,59 +1,59 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Logic
5
- class Mutation < Logic::BaseQuery
6
- class GenericPayload
7
- def initialize(*_args, **_kargs)
8
- raise 'Missuse error. You should define a payload_class for a class that inherits from Mutation class.'
9
- end
10
- end
11
-
12
- class GenericInput
13
- def initialize(*_args, **_kargs)
14
- raise 'Missuse error. You should define a input_class for a class that inherits from Mutation class.'
15
- end
16
- end
17
-
18
- class_resolver :payload_class, GenericPayload
19
- class_resolver :input_class, GenericInput
20
-
21
- accepted_params :input
22
-
23
- # Query rely that manages the different blocks.
24
- # @return [Class] an object of `response_class` with the results hanving from `path`.
25
- def query(input:, path: self.path, **kargs, &block)
26
- super(
27
- input: as_input(input),
28
- path: path,
29
- **kargs,
30
- &block
31
- )
32
- end
33
-
34
- def response_class
35
- payload_class
36
- end
37
-
38
- private
39
-
40
- def as_input(value)
41
- case value
42
- when input_class, Logic::BaseModel
43
- value.as_input
44
- when Hash
45
- value
46
- # when Hash
47
- # value = Helpers::Model::HashKeys.keys_to_sym_deep(value)
48
- # Ecoportal::API::Base::Model.as_input(value)
49
- when Enumerable
50
- value.map {|v| as_input(v)}
51
- else
52
- raise ArgumentError, "Expecting Hash, GraphQL::Base::Model or Enumerable. Unsupported type '#{value.class}'."
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ class Mutation < Logic::BaseQuery
6
+ class GenericPayload
7
+ def initialize(*_args, **_kargs)
8
+ raise 'Missuse error. You should define a payload_class for a class that inherits from Mutation class.'
9
+ end
10
+ end
11
+
12
+ class GenericInput
13
+ def initialize(*_args, **_kargs)
14
+ raise 'Missuse error. You should define a input_class for a class that inherits from Mutation class.'
15
+ end
16
+ end
17
+
18
+ class_resolver :payload_class, GenericPayload
19
+ class_resolver :input_class, GenericInput
20
+
21
+ accepted_params :input
22
+
23
+ # Query rely that manages the different blocks.
24
+ # @return [Class] an object of `response_class` with the results hanving from `path`.
25
+ def query(input:, path: self.path, **kargs, &block)
26
+ super(
27
+ input: as_input(input),
28
+ path: path,
29
+ **kargs,
30
+ &block
31
+ )
32
+ end
33
+
34
+ def response_class
35
+ payload_class
36
+ end
37
+
38
+ private
39
+
40
+ def as_input(value)
41
+ case value
42
+ when input_class, Logic::BaseModel
43
+ value.as_input
44
+ when Hash
45
+ value
46
+ # when Hash
47
+ # value = Helpers::Model::HashKeys.keys_to_sym_deep(value)
48
+ # Ecoportal::API::Base::Model.as_input(value)
49
+ when Enumerable
50
+ value.map {|v| as_input(v)}
51
+ else
52
+ raise ArgumentError, "Expecting Hash, GraphQL::Base::Model or Enumerable. Unsupported type '#{value.class}'."
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,42 +1,42 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Logic
5
- class Payload < Logic::BaseModel
6
- class GenericItem
7
- def initialize(*_args, **_kargs)
8
- raise "Missuse error. You should define a item_class for a class that inherits from GraphqlPayload class."
9
- end
10
- end
11
-
12
- read_only!
13
-
14
- passthrough :clientMutationId
15
-
16
- class_resolver :item_class, GenericItem
17
-
18
- embeds_one :item, klass: :item_class
19
- embeds_one :errors, klass: Error::ValidationErrors, nullable: true
20
-
21
- def success?
22
- !error?
23
- end
24
-
25
- def error?
26
- return false if errors.nil?
27
-
28
- !errors.empty?
29
- end
30
-
31
- def error_doc
32
- return unless (err_doc = errors&.doc)
33
-
34
- {
35
- errors: err_doc
36
- }
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ class Payload < Logic::BaseModel
6
+ class GenericItem
7
+ def initialize(*_args, **_kargs)
8
+ raise "Missuse error. You should define a item_class for a class that inherits from GraphqlPayload class."
9
+ end
10
+ end
11
+
12
+ read_only!
13
+
14
+ passthrough :clientMutationId
15
+
16
+ class_resolver :item_class, GenericItem
17
+
18
+ embeds_one :item, klass: :item_class
19
+ embeds_one :errors, klass: Error::ValidationErrors, nullable: true
20
+
21
+ def success?
22
+ !error?
23
+ end
24
+
25
+ def error?
26
+ return false if errors.nil?
27
+
28
+ !errors.empty?
29
+ end
30
+
31
+ def error_doc
32
+ return unless (err_doc = errors&.doc)
33
+
34
+ {
35
+ errors: err_doc
36
+ }
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,23 +1,23 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Logic
5
- class Query < Logic::BaseQuery
6
- class GenericItem
7
- def initialize(*_args, **_kargs)
8
- msg = "Missuse error. "
9
- msg << "You should define a item_class for a class that "
10
- msg << "inherits from Query class."
11
- raise msg
12
- end
13
- end
14
- class_resolver :item_class, GenericItem
15
-
16
- def response_class
17
- item_class
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ class Query < Logic::BaseQuery
6
+ class GenericItem
7
+ def initialize(*_args, **_kargs)
8
+ msg = "Missuse error. "
9
+ msg << "You should define a item_class for a class that "
10
+ msg << "inherits from Query class."
11
+ raise msg
12
+ end
13
+ end
14
+ class_resolver :item_class, GenericItem
15
+
16
+ def response_class
17
+ item_class
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,30 +1,30 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Logic
5
- class QueryArray < Logic::Query
6
- include Enumerable
7
-
8
- def each(item_block: nil, **kargs, &block)
9
- return to_enum(:each, item_block: connection_block, **kargs) unless block
10
-
11
- query(**kargs, &item_block).each do |item|
12
- yield(item) if block_given?
13
- end
14
- end
15
-
16
- def response_class
17
- return array_class if respond_to?(:array_class)
18
-
19
- @response_class ||= self.class.new_class(
20
- item_class,
21
- inherits: Ecoportal::API::Common::Content::CollectionModel
22
- ) do |klass|
23
- klass.klass = item_class
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ class QueryArray < Logic::Query
6
+ include Enumerable
7
+
8
+ def each(item_block: nil, **kargs, &block)
9
+ return to_enum(:each, item_block: connection_block, **kargs) unless block
10
+
11
+ query(**kargs, &item_block).each do |item|
12
+ yield(item) if block_given?
13
+ end
14
+ end
15
+
16
+ def response_class
17
+ return array_class if respond_to?(:array_class)
18
+
19
+ @response_class ||= self.class.new_class(
20
+ item_class,
21
+ inherits: Ecoportal::API::Common::Content::CollectionModel
22
+ ) do |klass|
23
+ klass.klass = item_class
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,48 +1,48 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Logic
5
- class QueryConnection < Logic::Query
6
- accepted_params :searchConf, :after, :before, :first, :last
7
- include Enumerable
8
-
9
- def each(connection_block: nil, **kargs, &block)
10
- return to_enum(:each, **kargs, connection_block: connection_block) unless block
11
-
12
- connection_block ||= default_connection_block
13
-
14
- cursor = nil
15
- loop do
16
- kargs.update(after: cursor) if cursor
17
- connection = query(**kargs, &connection_block)
18
- #total = connection.totalCount
19
- page_info = connection.pageInfo
20
- connection.nodes.each(&block)
21
-
22
- break unless (cursor = page_info.endCursor)
23
- # break unless page_info.hasNextPage
24
- end
25
- end
26
-
27
- def response_class
28
- return connection_class if respond_to?(:connection_class)
29
-
30
- @response_class ||= self.class.new_class(
31
- item_class,
32
- inherits: Logic::Connection,
33
- namespace: "Ecoportal::API::GraphQL::Connection"
34
- ) do |klass|
35
- klass.item_class = item_class
36
- end
37
- end
38
-
39
- private
40
-
41
- def default_connection_block
42
- raise 'You should defined this method'
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ class QueryConnection < Logic::Query
6
+ accepted_params :searchConf, :after, :before, :first, :last
7
+ include Enumerable
8
+
9
+ def each(connection_block: nil, **kargs, &block)
10
+ return to_enum(:each, **kargs, connection_block: connection_block) unless block
11
+
12
+ connection_block ||= default_connection_block
13
+
14
+ cursor = nil
15
+ loop do
16
+ kargs.update(after: cursor) if cursor
17
+ connection = query(**kargs, &connection_block)
18
+ #total = connection.totalCount
19
+ page_info = connection.pageInfo
20
+ connection.nodes.each(&block)
21
+
22
+ break unless (cursor = page_info.endCursor)
23
+ # break unless page_info.hasNextPage
24
+ end
25
+ end
26
+
27
+ def response_class
28
+ return connection_class if respond_to?(:connection_class)
29
+
30
+ @response_class ||= self.class.new_class(
31
+ item_class,
32
+ inherits: Logic::Connection,
33
+ namespace: "Ecoportal::API::GraphQL::Connection"
34
+ ) do |klass|
35
+ klass.item_class = item_class
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def default_connection_block
42
+ raise 'You should defined this method'
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,18 +1,18 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Logic
5
- end
6
- end
7
- end
8
- end
9
-
10
- require_relative 'logic/base_model'
11
- require_relative 'logic/base_query'
12
- require_relative 'logic/query'
13
- require_relative 'logic/mutation'
14
- require_relative 'logic/connection'
15
- require_relative 'logic/query_array'
16
- require_relative 'logic/query_connection'
17
- require_relative 'logic/payload'
18
- require_relative 'logic/input'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Logic
5
+ end
6
+ end
7
+ end
8
+ end
9
+
10
+ require_relative 'logic/base_model'
11
+ require_relative 'logic/base_query'
12
+ require_relative 'logic/query'
13
+ require_relative 'logic/mutation'
14
+ require_relative 'logic/connection'
15
+ require_relative 'logic/query_array'
16
+ require_relative 'logic/query_connection'
17
+ require_relative 'logic/payload'
18
+ require_relative 'logic/input'
@@ -1,15 +1,15 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Model
5
- class Account < Logic::BaseModel
6
- root!
7
-
8
- passkey :id
9
- passthrough :default_tag
10
- passboolean :active
11
- end
12
- end
13
- end
14
- end
15
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Model
5
+ class Account < Logic::BaseModel
6
+ root!
7
+
8
+ passkey :id
9
+ passthrough :default_tag
10
+ passboolean :active
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,22 +1,22 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Model
5
- class Action < Base::Action
6
- embeds_one :actionCategory, klass: GraphQL::Base::ActionCategory
7
- embeds_many :assignedTo, klass: Model::PersonMember
8
- embeds_one :creator, klass: Model::PersonMember
9
- embeds_one :creatorUser, klass: Model::User
10
- embeds_one :updater, klass: Model::PersonMember
11
- embeds_one :updaterUser, klass: Model::User
12
- embeds_one :completer, klass: Model::PersonMember
13
- embeds_many :fileContainers, klass: Model::FileContainer
14
- embeds_many :linkedResources, klass: Model::Resource
15
- embeds_many :locations, klass: Model::LocationNode
16
- #embeds_many :activities, klass: GraphQL::Model::Action::Activity
17
- #embeds_one :recurrence, klass: GraphQL::Model::Action::Recurrence
18
- end
19
- end
20
- end
21
- end
22
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Model
5
+ class Action < Base::Action
6
+ embeds_one :actionCategory, klass: GraphQL::Base::ActionCategory
7
+ embeds_many :assignedTo, klass: Model::PersonMember
8
+ embeds_one :creator, klass: Model::PersonMember
9
+ embeds_one :creatorUser, klass: Model::User
10
+ embeds_one :updater, klass: Model::PersonMember
11
+ embeds_one :updaterUser, klass: Model::User
12
+ embeds_one :completer, klass: Model::PersonMember
13
+ embeds_many :fileContainers, klass: Model::FileContainer
14
+ embeds_many :linkedResources, klass: Model::Resource
15
+ embeds_many :locations, klass: Model::LocationNode
16
+ #embeds_many :activities, klass: GraphQL::Model::Action::Activity
17
+ #embeds_one :recurrence, klass: GraphQL::Model::Action::Recurrence
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Model
5
+ class ActionEvent < Base::ActionEvent
6
+ # assignedPersonMembers: [PreviewPersonMember!]! — Model::PersonMember's
7
+ # read fields are a compatible superset.
8
+ embeds_many :assignedPersonMembers, klass: Model::PersonMember
9
+ embeds_many :pages, klass: "Ecoportal::API::GraphQL::Model::ActionEventPage"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end