Class: Decidim::Core::ComponentList

Inherits:
Object
  • Object
show all
Includes:
NeedsApiDefaultOrder, NeedsApiFilterAndOrder
Defined in:
lib/decidim/api/functions/component_list.rb

Overview

An abstract resolver for the GraphQL component endpoints inside a participatory_space. Used in the keyword “components”, ie:

participatoryProcesses

components {...

}

Needs to be extended and add arguments.

This is used by ParticipatorySpaceInterface to apply filter/orders when searching raw components. When listing properly defined components, use ComponentListBase instead

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from NeedsApiFilterAndOrder

#add_filter_keys, #add_order_keys

Constructor Details

#initializeComponentList

Returns a new instance of ComponentList.



23
24
25
# File 'lib/decidim/api/functions/component_list.rb', line 23

def initialize
  @model_class = Component
end

Instance Attribute Details

#model_classObject (readonly)

Returns the value of attribute model_class.



21
22
23
# File 'lib/decidim/api/functions/component_list.rb', line 21

def model_class
  @model_class
end

Instance Method Details

#call(participatory_space, args, ctx) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/decidim/api/functions/component_list.rb', line 27

def call(participatory_space, args, ctx)
  @query = Decidim::Component
  # remove default ordering if custom order required
  @query = @query.unscoped if args[:order]
  @query = @query.where(participatory_space:)
  @query = @query.published unless ctx[:current_user]&.admin?
  add_filter_keys(args[:filter])
  add_order_keys(args[:order].to_h)
  add_default_order
  @query
end