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,41 +1,41 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Builder
5
- class Action
6
- attr_reader :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- def archive(**kargs, &block)
13
- archiveMutation.query(**kargs, &block)
14
- end
15
-
16
- def update(**kargs, &block)
17
- updateMutation.query(**kargs, &block)
18
- end
19
-
20
- def create(**kargs, &block)
21
- createMutation.query(**kargs, &block)
22
- end
23
-
24
- private
25
-
26
- def archiveMutation
27
- Mutation::Action::Archive.new(client)
28
- end
29
-
30
- def updateMutation
31
- Mutation::Action::Update.new(client)
32
- end
33
-
34
- def createMutation
35
- Mutation::Action::Create.new(client)
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Builder
5
+ class Action
6
+ attr_reader :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def archive(**kargs, &block)
13
+ archiveMutation.query(**kargs, &block)
14
+ end
15
+
16
+ def update(**kargs, &block)
17
+ updateMutation.query(**kargs, &block)
18
+ end
19
+
20
+ def create(**kargs, &block)
21
+ createMutation.query(**kargs, &block)
22
+ end
23
+
24
+ private
25
+
26
+ def archiveMutation
27
+ Mutation::Action::Archive.new(client)
28
+ end
29
+
30
+ def updateMutation
31
+ Mutation::Action::Update.new(client)
32
+ end
33
+
34
+ def createMutation
35
+ Mutation::Action::Create.new(client)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,64 +1,64 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Builder
5
- class LocationStructure
6
- class Draft
7
- attr_reader :client, :parent
8
-
9
- def initialize(client, parent:)
10
- @client = client
11
- @parent = parent
12
- end
13
-
14
- def nodeClassifications(**kargs, &block)
15
- parent.nodeClassifications(**kargs, &block)
16
- end
17
-
18
- def create(**kargs, &block)
19
- createMutation.query(**kargs, &block)
20
- end
21
-
22
- def addCommands(**kargs, &block)
23
- addCommandsMutation.query(**kargs, &block)
24
- end
25
-
26
- def delete(**kargs, &block)
27
- deleteMutation.query(**kargs, &block)
28
- end
29
-
30
- def publish(**kargs, &block)
31
- publishMutation.query(**kargs, &block)
32
- end
33
-
34
- def DropBadCommands(**kargs, &block)
35
- dropBadCommandsMutation.query(**kargs, &block)
36
- end
37
-
38
- private
39
-
40
- def createMutation
41
- Mutation::LocationStructure::Draft::Create.new(client)
42
- end
43
-
44
- def addCommandsMutation
45
- Mutation::LocationStructure::Draft::AddCommands.new(client)
46
- end
47
-
48
- def deleteMutation
49
- Mutation::LocationStructure::Draft::Delete.new(client)
50
- end
51
-
52
- def publishMutation
53
- Mutation::LocationStructure::Draft::Publish.new(client)
54
- end
55
-
56
- def dropBadCommandsMutation
57
- Mutation::LocationStructure::Draft::DropBadCommands.new(client)
58
- end
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Builder
5
+ class LocationStructure
6
+ class Draft
7
+ attr_reader :client, :parent
8
+
9
+ def initialize(client, parent:)
10
+ @client = client
11
+ @parent = parent
12
+ end
13
+
14
+ def nodeClassifications(**kargs, &block)
15
+ parent.nodeClassifications(**kargs, &block)
16
+ end
17
+
18
+ def create(**kargs, &block)
19
+ createMutation.query(**kargs, &block)
20
+ end
21
+
22
+ def addCommands(**kargs, &block)
23
+ addCommandsMutation.query(**kargs, &block)
24
+ end
25
+
26
+ def delete(**kargs, &block)
27
+ deleteMutation.query(**kargs, &block)
28
+ end
29
+
30
+ def publish(**kargs, &block)
31
+ publishMutation.query(**kargs, &block)
32
+ end
33
+
34
+ def DropBadCommands(**kargs, &block)
35
+ dropBadCommandsMutation.query(**kargs, &block)
36
+ end
37
+
38
+ private
39
+
40
+ def createMutation
41
+ Mutation::LocationStructure::Draft::Create.new(client)
42
+ end
43
+
44
+ def addCommandsMutation
45
+ Mutation::LocationStructure::Draft::AddCommands.new(client)
46
+ end
47
+
48
+ def deleteMutation
49
+ Mutation::LocationStructure::Draft::Delete.new(client)
50
+ end
51
+
52
+ def publishMutation
53
+ Mutation::LocationStructure::Draft::Publish.new(client)
54
+ end
55
+
56
+ def dropBadCommandsMutation
57
+ Mutation::LocationStructure::Draft::DropBadCommands.new(client)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -1,40 +1,40 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Builder
5
- class LocationStructure
6
- attr_reader :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- def nodeClassifications(**kargs, &block)
13
- query_model = Query::LocationClassifications.new(client)
14
- query_model.query(**kargs, &block)
15
- end
16
-
17
- def applyCommandsInput
18
- Input::LocationStructure::ApplyCommands.new
19
- end
20
-
21
- def applyCommands(**kargs, &block)
22
- applyCommandsMutation.query(**kargs, &block)
23
- end
24
-
25
- def draft
26
- LocationStructure::Draft.new(client, parent: self)
27
- end
28
-
29
- private
30
-
31
- def applyCommandsMutation
32
- Mutation::LocationStructure::ApplyCommands.new(client)
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
39
-
40
- require_relative 'location_structure/draft'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Builder
5
+ class LocationStructure
6
+ attr_reader :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def nodeClassifications(**kargs, &block)
13
+ query_model = Query::LocationClassifications.new(client)
14
+ query_model.query(**kargs, &block)
15
+ end
16
+
17
+ def applyCommandsInput
18
+ Input::LocationStructure::ApplyCommands.new
19
+ end
20
+
21
+ def applyCommands(**kargs, &block)
22
+ applyCommandsMutation.query(**kargs, &block)
23
+ end
24
+
25
+ def draft
26
+ LocationStructure::Draft.new(client, parent: self)
27
+ end
28
+
29
+ private
30
+
31
+ def applyCommandsMutation
32
+ Mutation::LocationStructure::ApplyCommands.new(client)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ require_relative 'location_structure/draft'
@@ -1,84 +1,84 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Builder
5
- class Register
6
- # Sub-builder for preset view operations within a register context.
7
- # Access via: api.register.preset_view
8
- #
9
- # Usage:
10
- # pv = api.register.preset_view
11
- #
12
- # # List preset views for a register (find IDs for presetViewId in searches)
13
- # views = pv.list('REG_ID')
14
- # views.map { |v| "#{v.name} (#{v.id}) global=#{v.global?}" }
15
- #
16
- # # Create a preset view
17
- # pv.create(input: {
18
- # registerId: 'REG_ID',
19
- # name: 'Active Pages',
20
- # customPresetView: true,
21
- # fieldConfigs: [{ key: 'name', weight: 0 }, { key: 'state', weight: 1 }],
22
- # sorter: { key: 'created_at', direction: 'desc' }
23
- # })
24
- #
25
- # # Share with a user (view access)
26
- # pv.permission(input: {
27
- # id: 'VIEW_ID',
28
- # permissions: [{ level: 'view', to: { userId: 'USER_ID' } }]
29
- # })
30
- class PresetView
31
- attr_reader :client
32
-
33
- def initialize(client)
34
- @client = client
35
- end
36
-
37
- # List all preset views for a register. Returns an array of PresetView objects.
38
- def list(register_id, search_conf: nil, &block)
39
- Query::RegisterPresetViews.new(client).query(
40
- registerId: register_id,
41
- searchConf: search_conf,
42
- &block
43
- ).nodes
44
- end
45
-
46
- def create(**kargs, &block)
47
- createMutation.query(**kargs, &block)
48
- end
49
-
50
- def update(**kargs, &block)
51
- updateMutation.query(**kargs, &block)
52
- end
53
-
54
- def permission(**kargs, &block)
55
- permissionMutation.query(**kargs, &block)
56
- end
57
-
58
- def destroy(**kargs, &block)
59
- destroyMutation.query(**kargs, &block)
60
- end
61
-
62
- private
63
-
64
- def createMutation
65
- Mutation::PresetView::Create.new(client)
66
- end
67
-
68
- def updateMutation
69
- Mutation::PresetView::Update.new(client)
70
- end
71
-
72
- def permissionMutation
73
- Mutation::PresetView::Permission.new(client)
74
- end
75
-
76
- def destroyMutation
77
- Mutation::PresetView::Destroy.new(client)
78
- end
79
- end
80
- end
81
- end
82
- end
83
- end
84
- end
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Builder
5
+ class Register
6
+ # Sub-builder for preset view operations within a register context.
7
+ # Access via: api.register.preset_view
8
+ #
9
+ # Usage:
10
+ # pv = api.register.preset_view
11
+ #
12
+ # # List preset views for a register (find IDs for presetViewId in searches)
13
+ # views = pv.list('REG_ID')
14
+ # views.map { |v| "#{v.name} (#{v.id}) global=#{v.global?}" }
15
+ #
16
+ # # Create a preset view
17
+ # pv.create(input: {
18
+ # registerId: 'REG_ID',
19
+ # name: 'Active Pages',
20
+ # customPresetView: true,
21
+ # fieldConfigs: [{ key: 'name', weight: 0 }, { key: 'state', weight: 1 }],
22
+ # sorter: { key: 'created_at', direction: 'desc' }
23
+ # })
24
+ #
25
+ # # Share with a user (view access)
26
+ # pv.permission(input: {
27
+ # id: 'VIEW_ID',
28
+ # permissions: [{ level: 'view', to: { userId: 'USER_ID' } }]
29
+ # })
30
+ class PresetView
31
+ attr_reader :client
32
+
33
+ def initialize(client)
34
+ @client = client
35
+ end
36
+
37
+ # List all preset views for a register. Returns an array of PresetView objects.
38
+ def list(register_id, search_conf: nil, &block)
39
+ Query::RegisterPresetViews.new(client).query(
40
+ registerId: register_id,
41
+ searchConf: search_conf,
42
+ &block
43
+ ).nodes
44
+ end
45
+
46
+ def create(**kargs, &block)
47
+ createMutation.query(**kargs, &block)
48
+ end
49
+
50
+ def update(**kargs, &block)
51
+ updateMutation.query(**kargs, &block)
52
+ end
53
+
54
+ def permission(**kargs, &block)
55
+ permissionMutation.query(**kargs, &block)
56
+ end
57
+
58
+ def destroy(**kargs, &block)
59
+ destroyMutation.query(**kargs, &block)
60
+ end
61
+
62
+ private
63
+
64
+ def createMutation
65
+ Mutation::PresetView::Create.new(client)
66
+ end
67
+
68
+ def updateMutation
69
+ Mutation::PresetView::Update.new(client)
70
+ end
71
+
72
+ def permissionMutation
73
+ Mutation::PresetView::Permission.new(client)
74
+ end
75
+
76
+ def destroyMutation
77
+ Mutation::PresetView::Destroy.new(client)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -1,49 +1,49 @@
1
- module Ecoportal
2
- module API
3
- class GraphQL
4
- module Builder
5
- class Register
6
- attr_reader :client
7
-
8
- def initialize(client)
9
- @client = client
10
- end
11
-
12
- # Register CRUD
13
- def create(**kargs, &block)
14
- createMutation.query(**kargs, &block)
15
- end
16
-
17
- def update(**kargs, &block)
18
- updateMutation.query(**kargs, &block)
19
- end
20
-
21
- def destroy(**kargs, &block)
22
- destroyMutation.query(**kargs, &block)
23
- end
24
-
25
- # Preset view sub-builder — list, create, update, permission, destroy
26
- def preset_view
27
- Register::PresetView.new(client)
28
- end
29
-
30
- private
31
-
32
- def createMutation
33
- Mutation::Register::Create.new(client)
34
- end
35
-
36
- def updateMutation
37
- Mutation::Register::Update.new(client)
38
- end
39
-
40
- def destroyMutation
41
- Mutation::Register::Destroy.new(client)
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
-
49
- require_relative 'register/preset_view'
1
+ module Ecoportal
2
+ module API
3
+ class GraphQL
4
+ module Builder
5
+ class Register
6
+ attr_reader :client
7
+
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ # Register CRUD
13
+ def create(**kargs, &block)
14
+ createMutation.query(**kargs, &block)
15
+ end
16
+
17
+ def update(**kargs, &block)
18
+ updateMutation.query(**kargs, &block)
19
+ end
20
+
21
+ def destroy(**kargs, &block)
22
+ destroyMutation.query(**kargs, &block)
23
+ end
24
+
25
+ # Preset view sub-builder — list, create, update, permission, destroy
26
+ def preset_view
27
+ Register::PresetView.new(client)
28
+ end
29
+
30
+ private
31
+
32
+ def createMutation
33
+ Mutation::Register::Create.new(client)
34
+ end
35
+
36
+ def updateMutation
37
+ Mutation::Register::Update.new(client)
38
+ end
39
+
40
+ def destroyMutation
41
+ Mutation::Register::Destroy.new(client)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ require_relative 'register/preset_view'
@@ -58,6 +58,30 @@ module Ecoportal
58
58
  destroyRelatedPageMutation.query(template_id: template_id, id: id, patch_ver: patch_ver, &block)
59
59
  end
60
60
 
61
+ # TEMPLATE CHANGE LOG — who changed this template, what, and when. Newest first
62
+ # (server-side `_id: :desc`), paginated.
63
+ #
64
+ # api.template.change_log(id: template_page_id, first: 50) # => Connection
65
+ # api.template.change_log.each(id: template_page_id) { |e| ... } # auto-paginates
66
+ #
67
+ # ★ Two caveats, both silent — read `Base::Template::ChangeLogEntry` before relying on
68
+ # this: the connection is nil (not empty) unless the caller satisfies
69
+ # `Pages::TemplatePolicy#update_information?`, and only TEMPLATE_BUILDER-sourced
70
+ # commands appear (workflow-builder ones are on `Query::PagesWorkflowCommands`).
71
+ #
72
+ # Called with no arguments it returns the query object itself, so `#each` /`#map` and
73
+ # the rest of Enumerable are available — same idiom as the QueryIntegration queries on
74
+ # `Model::Organization`.
75
+ # @param detail [Boolean] when true, also select FIELD-LEVEL detail (what changed).
76
+ # Ignored when an explicit block is given -- the block wins, since it is the more
77
+ # specific instruction. Off by default so the common who/when read stays cheap.
78
+ def change_log(detail: false, **kargs, &block)
79
+ selection = block || (detail ? Query::TemplateChangeLog.detail_block : nil)
80
+ return changeLogQuery if kargs.empty? && !selection
81
+
82
+ changeLogQuery.query(**kargs, &selection)
83
+ end
84
+
61
85
  private
62
86
 
63
87
  def createMutation
@@ -91,6 +115,10 @@ module Ecoportal
91
115
  def destroyRelatedPageMutation
92
116
  Mutation::Template::DestroyRelatedPage.new(client)
93
117
  end
118
+
119
+ def changeLogQuery
120
+ Query::TemplateChangeLog.new(client)
121
+ end
94
122
  end
95
123
  end
96
124
  end
@@ -24,7 +24,12 @@ module Ecoportal
24
24
  # { field_type: 'PlainText', label: 'Description', column: 0,
25
25
  # description: 'ID:token' }, # addField (+ editFieldConfiguration for description)
26
26
  # { field_type: 'Select', label: 'Severity',
27
- # options: [ { label: 'Low', weight: 0 }, ... ], # addSelectFieldOption
27
+ # options: [ { label: 'Low', weight: 0, value: 'low' },
28
+ # { label: 'High', weight: 10, value: 'high' } ], # addSelectFieldOption
29
+ # # `value:` is REQUIRED per option (backend: AddSelectFieldOptionInput,
30
+ # # required: true) — it is the option's unique key (duplicate values within one
31
+ # # field are rejected), always sent as a String even for numeric select fields
32
+ # # (stored as an Integer server-side). A missing `value` raises ArgumentError.
28
33
  # config: { select: { multiple: false } } }, # editFieldConfiguration(byType:)
29
34
  # { field_type: 'Gauge', label: 'Risk',
30
35
  # stops: [ { threshold: 0, color: '#0f0' }, ... ], # addGaugeFieldStop
@@ -125,9 +130,23 @@ module Ecoportal
125
130
  add(:editFieldConfiguration, data_field_id: field_ph, description: description)
126
131
  end
127
132
 
133
+ # addSelectFieldOption requires `value` (backend: AddSelectFieldOptionInput, required: true
134
+ # — a real field distinct from label/weight, cast to a number server-side for numeric
135
+ # select fields). The DSL has no natural default for it (unlike label/weight, it is
136
+ # business data this builder cannot infer), so it MUST be supplied per option in the spec;
137
+ # a missing one raises rather than silently falling back to the label/weight (which would
138
+ # risk persisting the wrong stored value for a scored/numeric select field).
128
139
  def emit_options(field, field_ph)
129
140
  Array(field[:options]).each do |opt|
130
- add(:addSelectFieldOption, data_field_id: field_ph, label: opt[:label], weight: opt[:weight])
141
+ value = opt[:value]
142
+ if value.nil?
143
+ raise ArgumentError,
144
+ "TemplateBuilder: option '#{opt[:label]}' on field '#{field[:label]}' is " \
145
+ 'missing `value` (addSelectFieldOption requires it) — supply ' \
146
+ 'options: [{ label:, weight:, value: }, ...] in the spec'
147
+ end
148
+
149
+ add(:addSelectFieldOption, data_field_id: field_ph, label: opt[:label], value: value, weight: opt[:weight])
131
150
  end
132
151
  end
133
152