module Ecoportal module API class GraphQL module Query class LocationStructures < Ecoportal::API::GraphQL::Logic::QueryArray accepted_params :includeArchived, :includeUnpublished, default: false accepted_params :includeArchivedNodes, default: true field_name :structures class_resolver :item_class, Ecoportal::API::GraphQL::Model::LocationStructure private def basic_block(&block) final_block = block || default_query_block proc { query(includeArchived: :boolean, includeUnpublished: :boolean, includeArchivedNodes: :boolean ) { currentOrganization { locations { structures( includeArchived: :includeArchived, includeUnpublished: :includeUnpublished, &final_block ) } } } } end # At the moment it always retrieves archived nodes!! # @note this is on purpose, as via API # there isn't much sense in not including archived nodes. def default_query_block proc { id name archived weight visitorManagementEnabled nodes(includeArchived: :includeArchivedNodes) { ___Ecoportal__API__GraphQL__Fragment__LocationNode } } end end end end end end