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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +363 -1
- data/LICENSE +21 -21
- data/README.md +24 -24
- data/lib/ecoportal/api/common/graphql/auth_service.rb +115 -115
- data/lib/ecoportal/api/common/graphql/class_helpers.rb +46 -46
- data/lib/ecoportal/api/common/graphql/client.rb +69 -69
- data/lib/ecoportal/api/common/graphql/hash_helpers.rb +105 -105
- data/lib/ecoportal/api/common/graphql/http_client.rb +85 -2
- data/lib/ecoportal/api/common/graphql/model/as_input.rb +54 -54
- data/lib/ecoportal/api/common/graphql/model/diffable/classic_diff_service.rb +49 -49
- data/lib/ecoportal/api/common/graphql/model/diffable/diff_service.rb +188 -188
- data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff.rb +55 -55
- data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff_nesting.rb +295 -295
- data/lib/ecoportal/api/common/graphql/model.rb +17 -17
- data/lib/ecoportal/api/common/graphql/patches.rb +1 -1
- data/lib/ecoportal/api/common/graphql/query_integration.rb +45 -45
- data/lib/ecoportal/api/common/graphql.rb +16 -16
- data/lib/ecoportal/api/common.graphql.rb +8 -8
- data/lib/ecoportal/api/graphql/base/action_category.rb +15 -15
- data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +1 -1
- data/lib/ecoportal/api/graphql/base/contractor_entity.rb +24 -24
- data/lib/ecoportal/api/graphql/base/date_time.rb +12 -12
- data/lib/ecoportal/api/graphql/base/delta_result.rb +16 -16
- data/lib/ecoportal/api/graphql/base/field.rb +12 -12
- data/lib/ecoportal/api/graphql/base/file_attachment.rb +15 -15
- data/lib/ecoportal/api/graphql/base/location_node.rb +14 -14
- data/lib/ecoportal/api/graphql/base/location_structure/draft/structure.rb +37 -37
- data/lib/ecoportal/api/graphql/base/location_structure/draft.rb +93 -93
- data/lib/ecoportal/api/graphql/base/page/data_field/actions_list.rb +9 -9
- data/lib/ecoportal/api/graphql/base/page/data_field/ai_summary.rb +18 -18
- data/lib/ecoportal/api/graphql/base/page/data_field/checklist.rb +29 -29
- data/lib/ecoportal/api/graphql/base/page/data_field/cross_reference.rb +1 -1
- data/lib/ecoportal/api/graphql/base/page/data_field/date_field.rb +23 -23
- data/lib/ecoportal/api/graphql/base/page/data_field/geo.rb +24 -24
- data/lib/ecoportal/api/graphql/base/page/data_field/image_gallery.rb +1 -1
- data/lib/ecoportal/api/graphql/base/page/data_field/law.rb +8 -8
- data/lib/ecoportal/api/graphql/base/page/data_field/mailbox.rb +9 -9
- data/lib/ecoportal/api/graphql/base/page/data_field/plain_text.rb +17 -17
- data/lib/ecoportal/api/graphql/base/page/data_field/rich_text.rb +26 -26
- data/lib/ecoportal/api/graphql/base/page/data_field/signature.rb +9 -9
- data/lib/ecoportal/api/graphql/base/page/data_field/smart_fill.rb +17 -17
- data/lib/ecoportal/api/graphql/base/page/data_field/table.rb +9 -9
- data/lib/ecoportal/api/graphql/base/page/data_field/tag_field.rb +21 -21
- data/lib/ecoportal/api/graphql/base/page/phased/stage.rb +51 -0
- data/lib/ecoportal/api/graphql/base/page/phased.rb +15 -15
- data/lib/ecoportal/api/graphql/base/page/section.rb +48 -48
- data/lib/ecoportal/api/graphql/base/page_info.rb +12 -12
- data/lib/ecoportal/api/graphql/base/pages_workflow/operation_interface.rb +39 -39
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/assign_to.rb +27 -27
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/send_notification.rb +30 -30
- data/lib/ecoportal/api/graphql/base/pages_workflow/recipient_config.rb +34 -34
- data/lib/ecoportal/api/graphql/base/pages_workflow.rb +35 -35
- data/lib/ecoportal/api/graphql/base/person_member.rb +22 -22
- data/lib/ecoportal/api/graphql/base/preview_page.rb +23 -23
- data/lib/ecoportal/api/graphql/base/register.rb +1 -1
- data/lib/ecoportal/api/graphql/base/resource.rb +13 -13
- data/lib/ecoportal/api/graphql/base/template/change_log_entry.rb +118 -0
- data/lib/ecoportal/api/graphql/base/template.rb +2 -0
- data/lib/ecoportal/api/graphql/builder/action.rb +41 -41
- data/lib/ecoportal/api/graphql/builder/location_structure/draft.rb +64 -64
- data/lib/ecoportal/api/graphql/builder/location_structure.rb +40 -40
- data/lib/ecoportal/api/graphql/builder/register/preset_view.rb +84 -84
- data/lib/ecoportal/api/graphql/builder/register.rb +49 -49
- data/lib/ecoportal/api/graphql/builder/template.rb +28 -0
- data/lib/ecoportal/api/graphql/builder/template_builder.rb +21 -2
- data/lib/ecoportal/api/graphql/compat/page_reference.rb +23 -23
- data/lib/ecoportal/api/graphql/compat/registers.rb +84 -84
- data/lib/ecoportal/api/graphql/compat/search_results.rb +33 -33
- data/lib/ecoportal/api/graphql/compat.rb +17 -17
- data/lib/ecoportal/api/graphql/concerns/data_field_access.rb +71 -71
- data/lib/ecoportal/api/graphql/concerns/fragment_definitions.rb +68 -68
- data/lib/ecoportal/api/graphql/concerns/snake_camel_access.rb +60 -60
- data/lib/ecoportal/api/graphql/connection/preset_view.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/template_change_log.rb +19 -0
- data/lib/ecoportal/api/graphql/connection.rb +1 -0
- data/lib/ecoportal/api/graphql/diff/change.rb +7 -2
- data/lib/ecoportal/api/graphql/diff/command_synthesizer.rb +19 -1
- data/lib/ecoportal/api/graphql/diff/version_diff.rb +13 -6
- data/lib/ecoportal/api/graphql/error/locations_error/fetch_nested.rb +51 -51
- data/lib/ecoportal/api/graphql/error/locations_error.rb +28 -28
- data/lib/ecoportal/api/graphql/error/locations_validation_error.rb +20 -20
- data/lib/ecoportal/api/graphql/error/validation_errors.rb +28 -28
- data/lib/ecoportal/api/graphql/error.rb +12 -12
- data/lib/ecoportal/api/graphql/file_upload.rb +10 -10
- data/lib/ecoportal/api/graphql/fragment/action.rb +65 -65
- data/lib/ecoportal/api/graphql/fragment/action_category.rb +17 -17
- data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +20 -20
- data/lib/ecoportal/api/graphql/fragment/locations_error.rb +19 -19
- data/lib/ecoportal/api/graphql/fragment/page.rb +1 -0
- data/lib/ecoportal/api/graphql/fragment/pages/common_page_union.rb +2 -0
- data/lib/ecoportal/api/graphql/fragment/pages.rb +15 -15
- data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -17
- data/lib/ecoportal/api/graphql/fragment/template_change_log.rb +102 -0
- data/lib/ecoportal/api/graphql/fragment.rb +1 -0
- data/lib/ecoportal/api/graphql/helpers/locations_tree.rb +41 -41
- data/lib/ecoportal/api/graphql/helpers.rb +10 -10
- data/lib/ecoportal/api/graphql/input/action/archive.rb +14 -14
- data/lib/ecoportal/api/graphql/input/action/create.rb +13 -13
- data/lib/ecoportal/api/graphql/input/action.rb +14 -14
- data/lib/ecoportal/api/graphql/input/contractor_entity/create.rb +14 -14
- data/lib/ecoportal/api/graphql/input/contractor_entity/destroy.rb +13 -13
- data/lib/ecoportal/api/graphql/input/delta_input.rb +16 -16
- data/lib/ecoportal/api/graphql/input/id_diff.rb +11 -11
- data/lib/ecoportal/api/graphql/input/location_structure/archive_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/delete_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/draft/create.rb +15 -15
- data/lib/ecoportal/api/graphql/input/location_structure/draft/delete.rb +15 -15
- data/lib/ecoportal/api/graphql/input/location_structure/draft/drop_bad_commands.rb +16 -16
- data/lib/ecoportal/api/graphql/input/location_structure/draft/publish.rb +16 -16
- data/lib/ecoportal/api/graphql/input/location_structure/draft.rb +19 -19
- data/lib/ecoportal/api/graphql/input/location_structure/insert_command.rb +21 -13
- data/lib/ecoportal/api/graphql/input/location_structure/move_command.rb +14 -14
- data/lib/ecoportal/api/graphql/input/location_structure/reorder_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/unarchive_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure.rb +20 -20
- data/lib/ecoportal/api/graphql/input/page/archive.rb +14 -14
- data/lib/ecoportal/api/graphql/input/page/build_from_template.rb +13 -13
- data/lib/ecoportal/api/graphql/input/page/create_draft.rb +13 -13
- data/lib/ecoportal/api/graphql/input/page/create_from_template.rb +18 -18
- data/lib/ecoportal/api/graphql/input/page/delete_draft.rb +13 -13
- data/lib/ecoportal/api/graphql/input/page/publish_draft.rb +13 -13
- data/lib/ecoportal/api/graphql/input/page/review_task.rb +27 -14
- data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -14
- data/lib/ecoportal/api/graphql/input/page.rb +26 -26
- data/lib/ecoportal/api/graphql/input/preset_view/create.rb +18 -18
- data/lib/ecoportal/api/graphql/input/preset_view/permission.rb +16 -16
- data/lib/ecoportal/api/graphql/input/preset_view/update.rb +1 -1
- data/lib/ecoportal/api/graphql/input/preset_view.rb +14 -14
- data/lib/ecoportal/api/graphql/input/register/create.rb +18 -18
- data/lib/ecoportal/api/graphql/input/register/update.rb +15 -15
- data/lib/ecoportal/api/graphql/input/register.rb +13 -13
- data/lib/ecoportal/api/graphql/input/search.rb +13 -13
- data/lib/ecoportal/api/graphql/input/search_conf/ai_generator.rb +234 -234
- data/lib/ecoportal/api/graphql/input/search_filter.rb +12 -12
- data/lib/ecoportal/api/graphql/input/search_sorter.rb +11 -11
- data/lib/ecoportal/api/graphql/input/workflow_command/add_action_tag.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_binding.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_comment_tagging_user_group.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_default_direct_strategy_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_default_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_direct_strategy_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_field.rb +10 -9
- data/lib/ecoportal/api/graphql/input/workflow_command/add_force.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_field_config.rb +23 -23
- data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_helper.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_direct_strategy_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_action_type.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_filter.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_people_field.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_task_config.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback.rb +23 -23
- data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback_action.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_select_field_option.rb +25 -19
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_tag.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_task.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_task_assignment_user_group.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/add_workflow_callback.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/collapse_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_binding.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_creator_permissions.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_default_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +7 -2
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_force.rb +21 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_gauge_field_stop.rb +19 -19
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_field_config.rb +19 -19
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_helper.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_reminder.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_required_sign_offs.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_comment_tagging.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_task_assignment.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_scheduled_callback.rb +22 -22
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_section_header.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_select_field_option.rb +23 -19
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_stage.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_task_due.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_template_basic_settings.rb +7 -2
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_trigger.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/expand_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/contractor_entities.rb +28 -24
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +8 -2
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/gauge.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/location_field.rb +24 -24
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +8 -2
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/signature.rb +20 -20
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/table.rb +25 -25
- data/lib/ecoportal/api/graphql/input/workflow_command/manage_copy_page_configuration.rb +47 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/move_stage.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_action_tag.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_binding.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_callback.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_comment_tagging_user_group.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_direct_strategy_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_direct_strategy_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_field.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_force.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_helper.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_direct_strategy_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_action_type.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_filter.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_people_field.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_task_config.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_user.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_scheduled_callback.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_section.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_tag.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_strategy.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_assignment_user_group.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_due.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_priority_level.rb +18 -18
- data/lib/ecoportal/api/graphql/input/workflow_command.rb +3 -0
- data/lib/ecoportal/api/graphql/interface/base_page.rb +14 -0
- data/lib/ecoportal/api/graphql/interface/location_structure/node.rb +43 -43
- data/lib/ecoportal/api/graphql/interface/location_structure.rb +14 -14
- data/lib/ecoportal/api/graphql/interface.rb +11 -11
- data/lib/ecoportal/api/graphql/logic/base_model.rb +15 -15
- data/lib/ecoportal/api/graphql/logic/base_query.rb +260 -193
- data/lib/ecoportal/api/graphql/logic/mutation.rb +59 -59
- data/lib/ecoportal/api/graphql/logic/payload.rb +42 -42
- data/lib/ecoportal/api/graphql/logic/query.rb +23 -23
- data/lib/ecoportal/api/graphql/logic/query_array.rb +30 -30
- data/lib/ecoportal/api/graphql/logic/query_connection.rb +48 -48
- data/lib/ecoportal/api/graphql/logic.rb +18 -18
- data/lib/ecoportal/api/graphql/model/account.rb +15 -15
- data/lib/ecoportal/api/graphql/model/action.rb +22 -22
- data/lib/ecoportal/api/graphql/model/ai_summary_version.rb +10 -10
- data/lib/ecoportal/api/graphql/model/contractor_entity.rb +12 -12
- data/lib/ecoportal/api/graphql/model/field.rb +10 -10
- data/lib/ecoportal/api/graphql/model/file_attachment.rb +10 -10
- data/lib/ecoportal/api/graphql/model/file_container.rb +11 -11
- data/lib/ecoportal/api/graphql/model/location_node.rb +14 -14
- data/lib/ecoportal/api/graphql/model/location_structure/draft/structure.rb +15 -15
- data/lib/ecoportal/api/graphql/model/location_structure/draft.rb +15 -15
- data/lib/ecoportal/api/graphql/model/location_structure.rb +16 -16
- data/lib/ecoportal/api/graphql/model/organization.rb +9 -0
- data/lib/ecoportal/api/graphql/model/page/basic.rb +14 -14
- data/lib/ecoportal/api/graphql/model/page/data_field.rb +12 -12
- data/lib/ecoportal/api/graphql/model/page/phased/stage.rb +14 -14
- data/lib/ecoportal/api/graphql/model/page/phased.rb +17 -0
- data/lib/ecoportal/api/graphql/model/page/section.rb +12 -12
- data/lib/ecoportal/api/graphql/model/page_union.rb +21 -21
- data/lib/ecoportal/api/graphql/model/pages_workflow.rb +20 -20
- data/lib/ecoportal/api/graphql/model/preset_view.rb +10 -10
- data/lib/ecoportal/api/graphql/model/preview_page.rb +10 -10
- data/lib/ecoportal/api/graphql/model/register.rb +10 -10
- data/lib/ecoportal/api/graphql/model/resource.rb +13 -13
- data/lib/ecoportal/api/graphql/model/template/change_log_entry.rb +19 -0
- data/lib/ecoportal/api/graphql/model/template.rb +4 -1
- data/lib/ecoportal/api/graphql/model/user.rb +14 -14
- data/lib/ecoportal/api/graphql/mutation/action/archive.rb +41 -41
- data/lib/ecoportal/api/graphql/mutation/action/create.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/action/update.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/action.rb +14 -14
- data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/ai_summary.rb +13 -13
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/destroy.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/update.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb +54 -54
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/add_commands.rb +55 -55
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/create.rb +54 -54
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/delete.rb +43 -43
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/drop_bad_commands.rb +56 -56
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/publish.rb +66 -66
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft.rb +18 -18
- data/lib/ecoportal/api/graphql/mutation/location_structure.rb +13 -13
- data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/archive.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/build_from_template.rb +50 -50
- data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/create_from_template.rb +43 -43
- data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/unarchive.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/page/update.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/page.rb +28 -28
- data/lib/ecoportal/api/graphql/mutation/preset_view/create.rb +35 -35
- data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/preset_view/permission.rb +37 -37
- data/lib/ecoportal/api/graphql/mutation/preset_view/update.rb +35 -35
- data/lib/ecoportal/api/graphql/mutation/preset_view.rb +15 -15
- data/lib/ecoportal/api/graphql/mutation/register/create.rb +35 -35
- data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/register/update.rb +35 -35
- data/lib/ecoportal/api/graphql/mutation/register.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/action/archive.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/action/create.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/action/update.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/action.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/ai_summary_generate.rb +12 -12
- data/lib/ecoportal/api/graphql/payload/contractor_entity/create.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/contractor_entity/destroy.rb +12 -12
- data/lib/ecoportal/api/graphql/payload/contractor_entity/update.rb +12 -12
- data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_jobs.rb +2 -2
- data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_workflows.rb +2 -2
- data/lib/ecoportal/api/graphql/payload/location_structure/apply_commands.rb +51 -51
- data/lib/ecoportal/api/graphql/payload/location_structure/command_execution_result.rb +50 -50
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/add_commands.rb +30 -30
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/delete.rb +30 -30
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/drop_bad_commands.rb +43 -43
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/publish.rb +63 -63
- data/lib/ecoportal/api/graphql/payload/location_structure/draft.rb +18 -18
- data/lib/ecoportal/api/graphql/payload/location_structure.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/ok_payload.rb +1 -1
- data/lib/ecoportal/api/graphql/payload/page/archive.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/page/build_from_template.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/page/create_from_template.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/page/draft.rb +1 -1
- data/lib/ecoportal/api/graphql/payload/page/review_task.rb +1 -1
- data/lib/ecoportal/api/graphql/payload/page/unarchive.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/page/update.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/preset_view.rb +1 -1
- data/lib/ecoportal/api/graphql/payload/register.rb +1 -1
- data/lib/ecoportal/api/graphql/query/action.rb +33 -33
- data/lib/ecoportal/api/graphql/query/action_categories.rb +53 -53
- data/lib/ecoportal/api/graphql/query/actions.rb +43 -43
- data/lib/ecoportal/api/graphql/query/contractor_entities.rb +53 -53
- data/lib/ecoportal/api/graphql/query/file_upload_signature.rb +76 -76
- data/lib/ecoportal/api/graphql/query/location_classifications.rb +39 -39
- data/lib/ecoportal/api/graphql/query/page_delta.rb +47 -47
- data/lib/ecoportal/api/graphql/query/pages.rb +59 -59
- data/lib/ecoportal/api/graphql/query/person_members.rb +76 -0
- data/lib/ecoportal/api/graphql/query/register_preset_views.rb +1 -1
- data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -83
- data/lib/ecoportal/api/graphql/query/template_change_log.rb +118 -0
- data/lib/ecoportal/api/graphql/query/templates.rb +53 -53
- data/lib/ecoportal/api/graphql/query.rb +2 -0
- data/lib/ecoportal/api/graphql_version.rb +1 -1
- data/lib/ecoportal/api-graphql.rb +10 -10
- metadata +10 -8
- data/lib/ecoportal/api/common/graphql/CLAUDE.md +0 -36
- data/lib/ecoportal/api/common/graphql/model/CLAUDE.md +0 -28
- data/lib/ecoportal/api/graphql/CLAUDE.md +0 -37
- data/lib/ecoportal/api/graphql/base/CLAUDE.md +0 -50
- data/lib/ecoportal/api/graphql/builder/CLAUDE.md +0 -65
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Compat
|
|
5
|
-
# Returned by Compat::Pages#create — mirrors the v2 reference object.
|
|
6
|
-
# Scripts access .page_id and .active_stage_id after page creation.
|
|
7
|
-
class PageReference
|
|
8
|
-
attr_reader :page_id, :active_stage_id, :page
|
|
9
|
-
|
|
10
|
-
def initialize(page)
|
|
11
|
-
@page = page
|
|
12
|
-
@page_id = page.id
|
|
13
|
-
@active_stage_id = page.respond_to?(:current_stage_id) ? page.current_stage_id : nil
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def success?
|
|
17
|
-
!@page_id.nil?
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Compat
|
|
5
|
+
# Returned by Compat::Pages#create — mirrors the v2 reference object.
|
|
6
|
+
# Scripts access .page_id and .active_stage_id after page creation.
|
|
7
|
+
class PageReference
|
|
8
|
+
attr_reader :page_id, :active_stage_id, :page
|
|
9
|
+
|
|
10
|
+
def initialize(page)
|
|
11
|
+
@page = page
|
|
12
|
+
@page_id = page.id
|
|
13
|
+
@active_stage_id = page.respond_to?(:current_stage_id) ? page.current_stage_id : nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def success?
|
|
17
|
+
!@page_id.nil?
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Compat
|
|
5
|
-
# v2-compatible registers API backed by GraphQL register search.
|
|
6
|
-
# Scripts call: apiv2.registers.search(register_id, options) { |result| ... }
|
|
7
|
-
#
|
|
8
|
-
# With a block: yields each PreviewPage result (cursor-paginated).
|
|
9
|
-
# Without a block (or only_first: true): returns a SearchResults object
|
|
10
|
-
# with .total and .total_before_filtering.
|
|
11
|
-
#
|
|
12
|
-
# Filter translation:
|
|
13
|
-
# v2 date_filter { lbound:, ubound: } → GraphQL date_filter { gte:, lte: }
|
|
14
|
-
# v2 tag_filter { tags:, mode: } → passed through (same ES backend)
|
|
15
|
-
# SearchConf filter objects → passed through directly
|
|
16
|
-
class Registers
|
|
17
|
-
def initialize(client)
|
|
18
|
-
@client = client
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Options:
|
|
22
|
-
# sort: 'created_at' | 'updated_at'
|
|
23
|
-
# dir: 'asc' | 'desc'
|
|
24
|
-
# query: String (full-text search)
|
|
25
|
-
# filters: Array of filter objects or v2 filter hashes
|
|
26
|
-
# batch_size: Integer (results per request, default 20)
|
|
27
|
-
# include_archived: Boolean (default false)
|
|
28
|
-
# only_first: Boolean — return after first page (no block needed)
|
|
29
|
-
def search(register_id, options = {}, &block)
|
|
30
|
-
conf = build_search_conf(options)
|
|
31
|
-
first = options.fetch(:batch_size, 20)
|
|
32
|
-
query = Query::RegisterPreviewPages.new(@client)
|
|
33
|
-
|
|
34
|
-
args = {
|
|
35
|
-
registerId: register_id,
|
|
36
|
-
searchConf: conf.to_h,
|
|
37
|
-
includeArchived: options.fetch(:include_archived, false),
|
|
38
|
-
first: first
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if block || !options[:only_first]
|
|
42
|
-
# Block mode: yield each result, stop if only_first
|
|
43
|
-
query.each(**args) do |result|
|
|
44
|
-
block&.call(result)
|
|
45
|
-
break if options[:only_first]
|
|
46
|
-
end
|
|
47
|
-
else
|
|
48
|
-
# No-block mode: return SearchResults with .total etc.
|
|
49
|
-
raw = query.query(**args)
|
|
50
|
-
SearchResults.new(raw)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
private
|
|
55
|
-
|
|
56
|
-
def build_search_conf(options)
|
|
57
|
-
conf = Input::SearchConf.new
|
|
58
|
-
|
|
59
|
-
if (sort_key = options[:sort])
|
|
60
|
-
direction = options.fetch(:dir, 'desc').to_sym
|
|
61
|
-
conf.sort(sort_key.to_sym, direction)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
conf.query(options[:query]) if options[:query]
|
|
65
|
-
|
|
66
|
-
Array(options[:filters]).compact.each do |filter|
|
|
67
|
-
conf.filter(translate_filter(filter))
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
conf
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Translates a v2-style filter hash to a GraphQL-compatible filter hash.
|
|
74
|
-
# SearchConf filter objects (respond to to_h and are not Hash) pass through.
|
|
75
|
-
# v2 date_filter: lbound/ubound → gte/lte
|
|
76
|
-
# Other v2 types (tag_filter etc.): passed through — same ES backend.
|
|
77
|
-
def translate_filter(filter)
|
|
78
|
-
FilterTranslator.to_graphql(filter)
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Compat
|
|
5
|
+
# v2-compatible registers API backed by GraphQL register search.
|
|
6
|
+
# Scripts call: apiv2.registers.search(register_id, options) { |result| ... }
|
|
7
|
+
#
|
|
8
|
+
# With a block: yields each PreviewPage result (cursor-paginated).
|
|
9
|
+
# Without a block (or only_first: true): returns a SearchResults object
|
|
10
|
+
# with .total and .total_before_filtering.
|
|
11
|
+
#
|
|
12
|
+
# Filter translation:
|
|
13
|
+
# v2 date_filter { lbound:, ubound: } → GraphQL date_filter { gte:, lte: }
|
|
14
|
+
# v2 tag_filter { tags:, mode: } → passed through (same ES backend)
|
|
15
|
+
# SearchConf filter objects → passed through directly
|
|
16
|
+
class Registers
|
|
17
|
+
def initialize(client)
|
|
18
|
+
@client = client
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Options:
|
|
22
|
+
# sort: 'created_at' | 'updated_at'
|
|
23
|
+
# dir: 'asc' | 'desc'
|
|
24
|
+
# query: String (full-text search)
|
|
25
|
+
# filters: Array of filter objects or v2 filter hashes
|
|
26
|
+
# batch_size: Integer (results per request, default 20)
|
|
27
|
+
# include_archived: Boolean (default false)
|
|
28
|
+
# only_first: Boolean — return after first page (no block needed)
|
|
29
|
+
def search(register_id, options = {}, &block)
|
|
30
|
+
conf = build_search_conf(options)
|
|
31
|
+
first = options.fetch(:batch_size, 20)
|
|
32
|
+
query = Query::RegisterPreviewPages.new(@client)
|
|
33
|
+
|
|
34
|
+
args = {
|
|
35
|
+
registerId: register_id,
|
|
36
|
+
searchConf: conf.to_h,
|
|
37
|
+
includeArchived: options.fetch(:include_archived, false),
|
|
38
|
+
first: first
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if block || !options[:only_first]
|
|
42
|
+
# Block mode: yield each result, stop if only_first
|
|
43
|
+
query.each(**args) do |result|
|
|
44
|
+
block&.call(result)
|
|
45
|
+
break if options[:only_first]
|
|
46
|
+
end
|
|
47
|
+
else
|
|
48
|
+
# No-block mode: return SearchResults with .total etc.
|
|
49
|
+
raw = query.query(**args)
|
|
50
|
+
SearchResults.new(raw)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def build_search_conf(options)
|
|
57
|
+
conf = Input::SearchConf.new
|
|
58
|
+
|
|
59
|
+
if (sort_key = options[:sort])
|
|
60
|
+
direction = options.fetch(:dir, 'desc').to_sym
|
|
61
|
+
conf.sort(sort_key.to_sym, direction)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
conf.query(options[:query]) if options[:query]
|
|
65
|
+
|
|
66
|
+
Array(options[:filters]).compact.each do |filter|
|
|
67
|
+
conf.filter(translate_filter(filter))
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
conf
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Translates a v2-style filter hash to a GraphQL-compatible filter hash.
|
|
74
|
+
# SearchConf filter objects (respond to to_h and are not Hash) pass through.
|
|
75
|
+
# v2 date_filter: lbound/ubound → gte/lte
|
|
76
|
+
# Other v2 types (tag_filter etc.): passed through — same ES backend.
|
|
77
|
+
def translate_filter(filter)
|
|
78
|
+
FilterTranslator.to_graphql(filter)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Compat
|
|
5
|
-
# Wraps a GraphQL connection object to expose the v2-compatible search
|
|
6
|
-
# result interface. eco-helpers scripts access:
|
|
7
|
-
# search_results.total — filtered count
|
|
8
|
-
# search_results.total_before_filtering — pre-filter count (approximated)
|
|
9
|
-
# (also Enumerable for iteration)
|
|
10
|
-
class SearchResults
|
|
11
|
-
include Enumerable
|
|
12
|
-
|
|
13
|
-
attr_reader :total, :total_before_filtering
|
|
14
|
-
|
|
15
|
-
def initialize(connection)
|
|
16
|
-
@total = connection.totalCount
|
|
17
|
-
# GraphQL does not expose a pre-filter count — use the same value.
|
|
18
|
-
@total_before_filtering = connection.totalCount
|
|
19
|
-
@nodes = connection.nodes
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def each(&block)
|
|
23
|
-
@nodes.each(&block)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def empty?
|
|
27
|
-
@nodes.empty?
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Compat
|
|
5
|
+
# Wraps a GraphQL connection object to expose the v2-compatible search
|
|
6
|
+
# result interface. eco-helpers scripts access:
|
|
7
|
+
# search_results.total — filtered count
|
|
8
|
+
# search_results.total_before_filtering — pre-filter count (approximated)
|
|
9
|
+
# (also Enumerable for iteration)
|
|
10
|
+
class SearchResults
|
|
11
|
+
include Enumerable
|
|
12
|
+
|
|
13
|
+
attr_reader :total, :total_before_filtering
|
|
14
|
+
|
|
15
|
+
def initialize(connection)
|
|
16
|
+
@total = connection.totalCount
|
|
17
|
+
# GraphQL does not expose a pre-filter count — use the same value.
|
|
18
|
+
@total_before_filtering = connection.totalCount
|
|
19
|
+
@nodes = connection.nodes
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def each(&block)
|
|
23
|
+
@nodes.each(&block)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def empty?
|
|
27
|
+
@nodes.empty?
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Compat
|
|
5
|
-
end
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
require_relative 'compat/filter_translator'
|
|
11
|
-
require_relative 'compat/stage_collection'
|
|
12
|
-
require_relative 'compat/search_results'
|
|
13
|
-
require_relative 'compat/page_reference'
|
|
14
|
-
require_relative 'compat/response'
|
|
15
|
-
require_relative 'compat/stage_view'
|
|
16
|
-
require_relative 'compat/pages'
|
|
17
|
-
require_relative 'compat/registers'
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Compat
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
require_relative 'compat/filter_translator'
|
|
11
|
+
require_relative 'compat/stage_collection'
|
|
12
|
+
require_relative 'compat/search_results'
|
|
13
|
+
require_relative 'compat/page_reference'
|
|
14
|
+
require_relative 'compat/response'
|
|
15
|
+
require_relative 'compat/stage_view'
|
|
16
|
+
require_relative 'compat/pages'
|
|
17
|
+
require_relative 'compat/registers'
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Concerns
|
|
5
|
-
# Provides typed data field access on page models.
|
|
6
|
-
# Include in Interface::BasePage so all concrete page classes inherit it.
|
|
7
|
-
#
|
|
8
|
-
# Exposes:
|
|
9
|
-
# page.components — DataField::Collection (v2 compat alias for dataFields)
|
|
10
|
-
# page.field_collection — same, memoized
|
|
11
|
-
# page.data_fields_updates — [DataFieldInput, ...] for dirty fields
|
|
12
|
-
# page.data_fields_additions — [DataFieldInput, ...] for added fields
|
|
13
|
-
# page.data_fields_deletions — [field_id, ...] queued for deletion
|
|
14
|
-
module DataFieldAccess
|
|
15
|
-
# Returns a DataField::Collection wrapping raw dataFields from doc.
|
|
16
|
-
# Memoized — mutating a field object persists across calls.
|
|
17
|
-
def field_collection
|
|
18
|
-
@field_collection ||= Base::Page::DataField::Collection.from_doc(raw_data_fields)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# v2 compat alias — eco-helpers scripts call entry.components
|
|
22
|
-
def components
|
|
23
|
-
field_collection
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Returns a SectionCollection wrapping sections from doc.
|
|
27
|
-
# For BasicPage: doc['sections']. For PhasedPage: merged from stages (override in Phased).
|
|
28
|
-
def section_collection
|
|
29
|
-
@section_collection ||= Base::Page::SectionCollection.from_doc(raw_sections)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# v2 compat alias — eco-helpers scripts call entry.sections
|
|
33
|
-
def sections
|
|
34
|
-
section_collection
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Returns DataFieldInput hashes for modified existing fields (updates).
|
|
38
|
-
def data_fields_updates
|
|
39
|
-
field_collection.dirty_inputs
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Returns DataFieldInput hashes for newly added fields (via components.add).
|
|
43
|
-
def data_fields_additions
|
|
44
|
-
field_collection.dirty_additions
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Returns field IDs queued for deletion (via components.mark_for_deletion).
|
|
48
|
-
def data_fields_deletions
|
|
49
|
-
field_collection.dirty_deletions
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def data_fields_dirty?
|
|
53
|
-
field_collection.dirty?
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
private
|
|
57
|
-
|
|
58
|
-
# Override in subclasses if fields live elsewhere (e.g. nested in stages).
|
|
59
|
-
def raw_data_fields
|
|
60
|
-
doc['dataFields'] || []
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Override in subclasses for different section sources.
|
|
64
|
-
def raw_sections
|
|
65
|
-
doc['sections'] || []
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Concerns
|
|
5
|
+
# Provides typed data field access on page models.
|
|
6
|
+
# Include in Interface::BasePage so all concrete page classes inherit it.
|
|
7
|
+
#
|
|
8
|
+
# Exposes:
|
|
9
|
+
# page.components — DataField::Collection (v2 compat alias for dataFields)
|
|
10
|
+
# page.field_collection — same, memoized
|
|
11
|
+
# page.data_fields_updates — [DataFieldInput, ...] for dirty fields
|
|
12
|
+
# page.data_fields_additions — [DataFieldInput, ...] for added fields
|
|
13
|
+
# page.data_fields_deletions — [field_id, ...] queued for deletion
|
|
14
|
+
module DataFieldAccess
|
|
15
|
+
# Returns a DataField::Collection wrapping raw dataFields from doc.
|
|
16
|
+
# Memoized — mutating a field object persists across calls.
|
|
17
|
+
def field_collection
|
|
18
|
+
@field_collection ||= Base::Page::DataField::Collection.from_doc(raw_data_fields)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# v2 compat alias — eco-helpers scripts call entry.components
|
|
22
|
+
def components
|
|
23
|
+
field_collection
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Returns a SectionCollection wrapping sections from doc.
|
|
27
|
+
# For BasicPage: doc['sections']. For PhasedPage: merged from stages (override in Phased).
|
|
28
|
+
def section_collection
|
|
29
|
+
@section_collection ||= Base::Page::SectionCollection.from_doc(raw_sections)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# v2 compat alias — eco-helpers scripts call entry.sections
|
|
33
|
+
def sections
|
|
34
|
+
section_collection
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Returns DataFieldInput hashes for modified existing fields (updates).
|
|
38
|
+
def data_fields_updates
|
|
39
|
+
field_collection.dirty_inputs
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Returns DataFieldInput hashes for newly added fields (via components.add).
|
|
43
|
+
def data_fields_additions
|
|
44
|
+
field_collection.dirty_additions
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns field IDs queued for deletion (via components.mark_for_deletion).
|
|
48
|
+
def data_fields_deletions
|
|
49
|
+
field_collection.dirty_deletions
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def data_fields_dirty?
|
|
53
|
+
field_collection.dirty?
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
# Override in subclasses if fields live elsewhere (e.g. nested in stages).
|
|
59
|
+
def raw_data_fields
|
|
60
|
+
doc['dataFields'] || []
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Override in subclasses for different section sources.
|
|
64
|
+
def raw_sections
|
|
65
|
+
doc['sections'] || []
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Concerns
|
|
5
|
-
module FragmentDefinitions
|
|
6
|
-
class << self
|
|
7
|
-
private
|
|
8
|
-
|
|
9
|
-
def included(base)
|
|
10
|
-
super
|
|
11
|
-
|
|
12
|
-
base.send :include, Ecoportal::API::Common::GraphQL::ClassHelpers
|
|
13
|
-
base.extend ClassMethods
|
|
14
|
-
base.send :include, InstanceMethods
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
module ClassMethods
|
|
19
|
-
def fragment(sym, heredoc)
|
|
20
|
-
fragments[sym] = heredoc
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def fragments
|
|
24
|
-
@fragments ||= {}
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Register a sub-namespace class whose fragments are visible via assemble.
|
|
28
|
-
def register_namespace(klass)
|
|
29
|
-
namespaces << klass
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def namespaces
|
|
33
|
-
@namespaces ||= []
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Returns concatenated fragment definition strings for the given symbols.
|
|
37
|
-
# Searches own fragments and all registered sub-namespaces.
|
|
38
|
-
def assemble(*syms)
|
|
39
|
-
all = namespaces.reduce(fragments.dup) { |h, ns| h.merge(ns.fragments) }
|
|
40
|
-
syms.map { |sym| all[sym] }.compact.join("\n\n")
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
module InstanceMethods
|
|
45
|
-
attr_reader :client, :fragments
|
|
46
|
-
|
|
47
|
-
def initialize(client)
|
|
48
|
-
@client = client
|
|
49
|
-
parse
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Returns the raw fragment string for the given symbol.
|
|
53
|
-
# The namespace parameter is retained for API compatibility but has no effect.
|
|
54
|
-
def define(sym, heredoc, namespace: nil) # rubocop:disable Lint/UnusedMethodArgument
|
|
55
|
-
heredoc
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
private
|
|
59
|
-
|
|
60
|
-
def parse
|
|
61
|
-
@fragments = self.class.fragments.dup
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Concerns
|
|
5
|
+
module FragmentDefinitions
|
|
6
|
+
class << self
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def included(base)
|
|
10
|
+
super
|
|
11
|
+
|
|
12
|
+
base.send :include, Ecoportal::API::Common::GraphQL::ClassHelpers
|
|
13
|
+
base.extend ClassMethods
|
|
14
|
+
base.send :include, InstanceMethods
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module ClassMethods
|
|
19
|
+
def fragment(sym, heredoc)
|
|
20
|
+
fragments[sym] = heredoc
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def fragments
|
|
24
|
+
@fragments ||= {}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Register a sub-namespace class whose fragments are visible via assemble.
|
|
28
|
+
def register_namespace(klass)
|
|
29
|
+
namespaces << klass
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def namespaces
|
|
33
|
+
@namespaces ||= []
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Returns concatenated fragment definition strings for the given symbols.
|
|
37
|
+
# Searches own fragments and all registered sub-namespaces.
|
|
38
|
+
def assemble(*syms)
|
|
39
|
+
all = namespaces.reduce(fragments.dup) { |h, ns| h.merge(ns.fragments) }
|
|
40
|
+
syms.map { |sym| all[sym] }.compact.join("\n\n")
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
module InstanceMethods
|
|
45
|
+
attr_reader :client, :fragments
|
|
46
|
+
|
|
47
|
+
def initialize(client)
|
|
48
|
+
@client = client
|
|
49
|
+
parse
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Returns the raw fragment string for the given symbol.
|
|
53
|
+
# The namespace parameter is retained for API compatibility but has no effect.
|
|
54
|
+
def define(sym, heredoc, namespace: nil) # rubocop:disable Lint/UnusedMethodArgument
|
|
55
|
+
heredoc
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def parse
|
|
61
|
+
@fragments = self.class.fragments.dup
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|