class Decidim::Core::ComponentFinderBase

An abstract class with the logic for the GraphQL endpoint for a single component to be searchable. Normal components (such as Proposal) can inherit from this class and just add the needed search arguments

Usually something like:

class ProposalFinderHelper < Decidim::Core::ComponentFinderBase
  argument :id, !types.ID, "The ID of the proposal"
end

For an example check decidim-proposals/app/types/decidim/proposals/proposals_type.rb

Attributes

model_class[R]

Public Class Methods

new(model_class:) click to toggle source
# File lib/decidim/api/functions/component_finder_base.rb, line 20
def initialize(model_class:)
  @model_class = model_class
end

Public Instance Methods

call(component, args, _ctx) click to toggle source
# File lib/decidim/api/functions/component_finder_base.rb, line 24
def call(component, args, _ctx)
  @query = { component: component }
  args.keys.each do |key|
    @query[key] = args[key]
  end
  query_scope.find_by(@query)
end
query_scope() click to toggle source

By default, any model in its defaul scope Particular implementations may restrict this by adding additional constrains

# File lib/decidim/api/functions/component_finder_base.rb, line 35
def query_scope
  model_class
end