Class: Decidim::Core::ComponentListBase
- Inherits:
-
Object
- Object
- Decidim::Core::ComponentListBase
- Includes:
- NeedsApiDefaultOrder, NeedsApiFilterAndOrder
- Defined in:
- lib/decidim/api/functions/component_list_base.rb
Overview
A very basic resolver for the GraphQL endpoint for listing components Used in the keyword that lists some type of a specific component. For instance, “proposals” if it is a Proposal:
participatoryProcesses {
components {
... on Proposals {
proposals(...)
}
}
}
Needs to be extended and add arguments Usually something like:
class ProposalListHelper < Decidim::Core::ComponentListBase
argument :order, ProposalInputSort, "Provides several methods to order the results"
argument :filter, ProposalInputFilter, "Provides several methods to filter the results"
end
For an example check decidim-proposals/app/types/decidim/proposals/proposals_type.rb
Instance Attribute Summary collapse
-
#model_class ⇒ Object
readonly
Returns the value of attribute model_class.
Instance Method Summary collapse
- #call(component, args, _ctx) ⇒ Object
-
#initialize(model_class:) ⇒ ComponentListBase
constructor
A new instance of ComponentListBase.
-
#query_scope ⇒ Object
By default, any model uses the default scope for queries Particular implementations may restrict this by adding additional constrains.
Methods included from NeedsApiFilterAndOrder
#add_filter_keys, #add_order_keys
Constructor Details
#initialize(model_class:) ⇒ ComponentListBase
Returns a new instance of ComponentListBase.
33 34 35 |
# File 'lib/decidim/api/functions/component_list_base.rb', line 33 def initialize(model_class:) @model_class = model_class end |
Instance Attribute Details
#model_class ⇒ Object (readonly)
Returns the value of attribute model_class.
31 32 33 |
# File 'lib/decidim/api/functions/component_list_base.rb', line 31 def model_class @model_class end |
Instance Method Details
#call(component, args, _ctx) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/decidim/api/functions/component_list_base.rb', line 37 def call(component, args, _ctx) @query = query_scope.where(component: component) .includes(:component) add_filter_keys(args[:filter]) order = filter_keys_by_settings(args[:order].to_h, component) add_order_keys(order) add_default_order @query end |
#query_scope ⇒ Object
By default, any model uses the default scope for queries Particular implementations may restrict this by adding additional constrains
51 52 53 |
# File 'lib/decidim/api/functions/component_list_base.rb', line 51 def query_scope model_class end |