ecoportal-api-graphql 1.3.16 → 1.3.17
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 +13 -4
- 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/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/collection.rb +1 -1
- data/lib/ecoportal/api/graphql/base/page/data_field/contractor_entities.rb +1 -1
- 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/file_field.rb +1 -1
- 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.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/preset_view.rb +1 -1
- 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/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/compat/filter_translator.rb +1 -1
- 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/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/client.rb +1 -1
- 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/pages.rb +15 -15
- data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -17
- 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 +13 -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 +14 -14
- data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -14
- data/lib/ecoportal/api/graphql/input/page/update.rb +2 -2
- 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_conf.rb +1 -1
- 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_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 +19 -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_force.rb +18 -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 +19 -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_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 +24 -24
- 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/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/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/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 +193 -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/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/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/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/mutation/smart_fill/generate.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/smart_fill/submit_feedback.rb +1 -1
- data/lib/ecoportal/api/graphql/mutation/smart_fill.rb +1 -1
- 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/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/register_preset_views.rb +1 -1
- data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -83
- data/lib/ecoportal/api/graphql/query/templates.rb +53 -53
- data/lib/ecoportal/api/graphql_version.rb +1 -1
- data/lib/ecoportal/api-graphql.rb +10 -10
- metadata +1 -6
- 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,193 +1,193 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Logic
|
|
5
|
-
class BaseQuery
|
|
6
|
-
include Ecoportal::API::Common::GraphQL::ClassHelpers
|
|
7
|
-
|
|
8
|
-
inheritable_attrs :accepted_params, :param_defaults
|
|
9
|
-
|
|
10
|
-
DETAIL_ERRORS = [
|
|
11
|
-
Ecoportal::API::Common::GraphQL::ResponseError,
|
|
12
|
-
Ecoportal::API::Common::Client::Error::UnexpectedServerError,
|
|
13
|
-
Faraday::ParsingError,
|
|
14
|
-
Graphlient::Errors::FaradayServerError,
|
|
15
|
-
Graphlient::Errors::GraphQLError,
|
|
16
|
-
Graphlient::Errors::ClientError
|
|
17
|
-
].freeze
|
|
18
|
-
|
|
19
|
-
class << self
|
|
20
|
-
def param_defaults
|
|
21
|
-
@param_defaults ||= {}
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def accepted_params(*keys, default: :unused)
|
|
25
|
-
@accepted_params ||= []
|
|
26
|
-
return @accepted_params if keys.empty?
|
|
27
|
-
|
|
28
|
-
keys.map(&:to_sym).uniq.each do |key|
|
|
29
|
-
@accepted_params |= [key]
|
|
30
|
-
param_defaults[key] = default unless default == :unused
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
@accepted_params.push(*keys).tap(&:uniq!)
|
|
34
|
-
@accepted_params
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def clear_accepted_params
|
|
38
|
-
@param_defaults = {}
|
|
39
|
-
@accepted_params = []
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def slice_params(kargs)
|
|
43
|
-
kargs.slice(*accepted_params)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Used to obtain the full `path` in the GraphQL query by using `base_path`
|
|
47
|
-
# @note it is meant for reusability of queries from different end-points
|
|
48
|
-
def field_name(str = nil)
|
|
49
|
-
return @field_name unless str
|
|
50
|
-
|
|
51
|
-
@field_name = nil
|
|
52
|
-
@field_name = str.to_s if str
|
|
53
|
-
@field_name
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def base_path(path = :unused)
|
|
57
|
-
return @base_path if path == :unused
|
|
58
|
-
|
|
59
|
-
path ||= []
|
|
60
|
-
path = path.to_s.split('.') if path.is_a?(String)
|
|
61
|
-
path = path.map(&:to_s).compact
|
|
62
|
-
|
|
63
|
-
@base_path = path
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
include Ecoportal::API::Common::Concerns::Benchmarkable
|
|
68
|
-
|
|
69
|
-
attr_reader :client, :base_path
|
|
70
|
-
|
|
71
|
-
def initialize(client, path: nil, base_path: self.class.base_path)
|
|
72
|
-
@path = path
|
|
73
|
-
@base_path = base_path
|
|
74
|
-
@client = client
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Resolves the `path` by using `path` or `base_path` + `class.field_name`.
|
|
78
|
-
def path(field_name = self.class.field_name)
|
|
79
|
-
result = @path
|
|
80
|
-
result ||= default_path if respond_to?(:default_path, true)
|
|
81
|
-
result ||= (base_path + [field_name]) if base_path && field_name
|
|
82
|
-
result ||= [field_name]
|
|
83
|
-
result
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# Query rely that manages the different blocks.
|
|
87
|
-
# @return [Class] an object of `response_class` with the results hanging from `path`.
|
|
88
|
-
def query(path: self.path, raw_response: {}, **kargs, &block)
|
|
89
|
-
print = !is_a?(Mutation)
|
|
90
|
-
|
|
91
|
-
benchmarking("#{self.class}##{__method__}", print: print) do
|
|
92
|
-
graphql_query(
|
|
93
|
-
path: path,
|
|
94
|
-
raw_response: raw_response,
|
|
95
|
-
**kargs,
|
|
96
|
-
&basic_block(&block)
|
|
97
|
-
)
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def response_class
|
|
102
|
-
raise "You should override this method in #{self.class}"
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def access_point(path = [])
|
|
106
|
-
path.last
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
private
|
|
110
|
-
|
|
111
|
-
def basic_block
|
|
112
|
-
raise "This method should be implemented in the child class #{self.class}"
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
# Types that should be passed through as-is as GraphQL variable values.
|
|
116
|
-
# Anything else that responds to to_h is treated as a serialisable value object.
|
|
117
|
-
VARIABLE_PRIMITIVES = [
|
|
118
|
-
::NilClass, ::TrueClass, ::FalseClass,
|
|
119
|
-
::Integer, ::Float, ::String, ::Symbol,
|
|
120
|
-
::Hash, ::Array
|
|
121
|
-
].freeze
|
|
122
|
-
private_constant :VARIABLE_PRIMITIVES
|
|
123
|
-
|
|
124
|
-
def normalize_variables(kargs)
|
|
125
|
-
kargs.transform_values do |v|
|
|
126
|
-
VARIABLE_PRIMITIVES.any? { |t| v.is_a?(t) } || !v.respond_to?(:to_h) ? v : v.to_h
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def graphql_query(path: self.path, raw_response: {}, **kargs, &block)
|
|
131
|
-
default_params = self.class.param_defaults.dup
|
|
132
|
-
query_params = self.class.slice_params(normalize_variables(default_params.merge(kargs)))
|
|
133
|
-
|
|
134
|
-
query_str = client.to_query_string(&block)
|
|
135
|
-
fragment_str = assemble_fragments(query_str)
|
|
136
|
-
full_query = fragment_str.empty? ? query_str : "#{query_str}\n\n#{fragment_str}"
|
|
137
|
-
|
|
138
|
-
request(*path) do
|
|
139
|
-
client.http_client.execute(full_query, variables: query_params).tap do |response|
|
|
140
|
-
raw_response[:data] = response
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
rescue *DETAIL_ERRORS => _err
|
|
144
|
-
pp kargs
|
|
145
|
-
puts "Internal Error with these params:\n"
|
|
146
|
-
pp query_params
|
|
147
|
-
pp block
|
|
148
|
-
raise
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def request(*path)
|
|
152
|
-
response = yield
|
|
153
|
-
wrap_response(response, path)
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
# Resolves all fragment spreads in query_str, recursively following
|
|
157
|
-
# spreads inside assembled fragment bodies until no new names are found.
|
|
158
|
-
# Names that don't resolve to a registered fragment are skipped safely.
|
|
159
|
-
def assemble_fragments(query_str)
|
|
160
|
-
tried = {}
|
|
161
|
-
assembled = {}
|
|
162
|
-
pending = query_str.scan(/\.\.\.(\w+)/).flatten.map(&:to_sym).uniq
|
|
163
|
-
|
|
164
|
-
until (unresolved = pending.reject { |n| tried.key?(n) }).empty?
|
|
165
|
-
unresolved.each do |name|
|
|
166
|
-
tried[name] = true
|
|
167
|
-
frag = Ecoportal::API::GraphQL::Fragment.assemble(name)
|
|
168
|
-
next if frag.empty?
|
|
169
|
-
|
|
170
|
-
assembled[name] = frag
|
|
171
|
-
pending |= frag.scan(/\.\.\.(\w+)/).flatten.map(&:to_sym)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
assembled.values.join("\n\n")
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
def wrap_response(response, path = [])
|
|
179
|
-
# we use the Hash, because fragments are persmissioned
|
|
180
|
-
# see Use of Fragments at https://github.com/ashkan18/graphlient/tree/master?tab=readme-ov-file#use-of-fragments
|
|
181
|
-
unless (res = response.to_h.dig(*path.dup.unshift('data')))
|
|
182
|
-
msg = "Complete failure on request. Path: #{path}\n#{response.to_h.pretty_inspect}"
|
|
183
|
-
raise msg
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
data = Ecoportal::API::Common::GraphQL::HashHelpers.deep_dup(res)
|
|
187
|
-
response_class.new(data)
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Logic
|
|
5
|
+
class BaseQuery
|
|
6
|
+
include Ecoportal::API::Common::GraphQL::ClassHelpers
|
|
7
|
+
|
|
8
|
+
inheritable_attrs :accepted_params, :param_defaults
|
|
9
|
+
|
|
10
|
+
DETAIL_ERRORS = [
|
|
11
|
+
Ecoportal::API::Common::GraphQL::ResponseError,
|
|
12
|
+
Ecoportal::API::Common::Client::Error::UnexpectedServerError,
|
|
13
|
+
Faraday::ParsingError,
|
|
14
|
+
Graphlient::Errors::FaradayServerError,
|
|
15
|
+
Graphlient::Errors::GraphQLError,
|
|
16
|
+
Graphlient::Errors::ClientError
|
|
17
|
+
].freeze
|
|
18
|
+
|
|
19
|
+
class << self
|
|
20
|
+
def param_defaults
|
|
21
|
+
@param_defaults ||= {}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def accepted_params(*keys, default: :unused)
|
|
25
|
+
@accepted_params ||= []
|
|
26
|
+
return @accepted_params if keys.empty?
|
|
27
|
+
|
|
28
|
+
keys.map(&:to_sym).uniq.each do |key|
|
|
29
|
+
@accepted_params |= [key]
|
|
30
|
+
param_defaults[key] = default unless default == :unused
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
@accepted_params.push(*keys).tap(&:uniq!)
|
|
34
|
+
@accepted_params
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def clear_accepted_params
|
|
38
|
+
@param_defaults = {}
|
|
39
|
+
@accepted_params = []
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def slice_params(kargs)
|
|
43
|
+
kargs.slice(*accepted_params)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Used to obtain the full `path` in the GraphQL query by using `base_path`
|
|
47
|
+
# @note it is meant for reusability of queries from different end-points
|
|
48
|
+
def field_name(str = nil)
|
|
49
|
+
return @field_name unless str
|
|
50
|
+
|
|
51
|
+
@field_name = nil
|
|
52
|
+
@field_name = str.to_s if str
|
|
53
|
+
@field_name
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def base_path(path = :unused)
|
|
57
|
+
return @base_path if path == :unused
|
|
58
|
+
|
|
59
|
+
path ||= []
|
|
60
|
+
path = path.to_s.split('.') if path.is_a?(String)
|
|
61
|
+
path = path.map(&:to_s).compact
|
|
62
|
+
|
|
63
|
+
@base_path = path
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
include Ecoportal::API::Common::Concerns::Benchmarkable
|
|
68
|
+
|
|
69
|
+
attr_reader :client, :base_path
|
|
70
|
+
|
|
71
|
+
def initialize(client, path: nil, base_path: self.class.base_path)
|
|
72
|
+
@path = path
|
|
73
|
+
@base_path = base_path
|
|
74
|
+
@client = client
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Resolves the `path` by using `path` or `base_path` + `class.field_name`.
|
|
78
|
+
def path(field_name = self.class.field_name)
|
|
79
|
+
result = @path
|
|
80
|
+
result ||= default_path if respond_to?(:default_path, true)
|
|
81
|
+
result ||= (base_path + [field_name]) if base_path && field_name
|
|
82
|
+
result ||= [field_name]
|
|
83
|
+
result
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Query rely that manages the different blocks.
|
|
87
|
+
# @return [Class] an object of `response_class` with the results hanging from `path`.
|
|
88
|
+
def query(path: self.path, raw_response: {}, **kargs, &block)
|
|
89
|
+
print = !is_a?(Mutation)
|
|
90
|
+
|
|
91
|
+
benchmarking("#{self.class}##{__method__}", print: print) do
|
|
92
|
+
graphql_query(
|
|
93
|
+
path: path,
|
|
94
|
+
raw_response: raw_response,
|
|
95
|
+
**kargs,
|
|
96
|
+
&basic_block(&block)
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def response_class
|
|
102
|
+
raise "You should override this method in #{self.class}"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def access_point(path = [])
|
|
106
|
+
path.last
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
private
|
|
110
|
+
|
|
111
|
+
def basic_block
|
|
112
|
+
raise "This method should be implemented in the child class #{self.class}"
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Types that should be passed through as-is as GraphQL variable values.
|
|
116
|
+
# Anything else that responds to to_h is treated as a serialisable value object.
|
|
117
|
+
VARIABLE_PRIMITIVES = [
|
|
118
|
+
::NilClass, ::TrueClass, ::FalseClass,
|
|
119
|
+
::Integer, ::Float, ::String, ::Symbol,
|
|
120
|
+
::Hash, ::Array
|
|
121
|
+
].freeze
|
|
122
|
+
private_constant :VARIABLE_PRIMITIVES
|
|
123
|
+
|
|
124
|
+
def normalize_variables(kargs)
|
|
125
|
+
kargs.transform_values do |v|
|
|
126
|
+
VARIABLE_PRIMITIVES.any? { |t| v.is_a?(t) } || !v.respond_to?(:to_h) ? v : v.to_h
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def graphql_query(path: self.path, raw_response: {}, **kargs, &block)
|
|
131
|
+
default_params = self.class.param_defaults.dup
|
|
132
|
+
query_params = self.class.slice_params(normalize_variables(default_params.merge(kargs)))
|
|
133
|
+
|
|
134
|
+
query_str = client.to_query_string(&block)
|
|
135
|
+
fragment_str = assemble_fragments(query_str)
|
|
136
|
+
full_query = fragment_str.empty? ? query_str : "#{query_str}\n\n#{fragment_str}"
|
|
137
|
+
|
|
138
|
+
request(*path) do
|
|
139
|
+
client.http_client.execute(full_query, variables: query_params).tap do |response|
|
|
140
|
+
raw_response[:data] = response
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
rescue *DETAIL_ERRORS => _err
|
|
144
|
+
pp kargs
|
|
145
|
+
puts "Internal Error with these params:\n"
|
|
146
|
+
pp query_params
|
|
147
|
+
pp block
|
|
148
|
+
raise
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def request(*path)
|
|
152
|
+
response = yield
|
|
153
|
+
wrap_response(response, path)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Resolves all fragment spreads in query_str, recursively following
|
|
157
|
+
# spreads inside assembled fragment bodies until no new names are found.
|
|
158
|
+
# Names that don't resolve to a registered fragment are skipped safely.
|
|
159
|
+
def assemble_fragments(query_str)
|
|
160
|
+
tried = {}
|
|
161
|
+
assembled = {}
|
|
162
|
+
pending = query_str.scan(/\.\.\.(\w+)/).flatten.map(&:to_sym).uniq
|
|
163
|
+
|
|
164
|
+
until (unresolved = pending.reject { |n| tried.key?(n) }).empty?
|
|
165
|
+
unresolved.each do |name|
|
|
166
|
+
tried[name] = true
|
|
167
|
+
frag = Ecoportal::API::GraphQL::Fragment.assemble(name)
|
|
168
|
+
next if frag.empty?
|
|
169
|
+
|
|
170
|
+
assembled[name] = frag
|
|
171
|
+
pending |= frag.scan(/\.\.\.(\w+)/).flatten.map(&:to_sym)
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
assembled.values.join("\n\n")
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def wrap_response(response, path = [])
|
|
179
|
+
# we use the Hash, because fragments are persmissioned
|
|
180
|
+
# see Use of Fragments at https://github.com/ashkan18/graphlient/tree/master?tab=readme-ov-file#use-of-fragments
|
|
181
|
+
unless (res = response.to_h.dig(*path.dup.unshift('data')))
|
|
182
|
+
msg = "Complete failure on request. Path: #{path}\n#{response.to_h.pretty_inspect}"
|
|
183
|
+
raise msg
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
data = Ecoportal::API::Common::GraphQL::HashHelpers.deep_dup(res)
|
|
187
|
+
response_class.new(data)
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
@@ -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
|