class Decidim::TermCustomizer::Resolver

Attributes

component[R]
organization[R]
space[R]

Public Class Methods

new(organization, space, component) click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 8
def initialize(organization, space, component)
  @organization = organization
  @space = space
  @component = component
end

Public Instance Methods

constraints() click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 18
def constraints
  @constraints ||= resolve_constraints_query
end
translations() click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 14
def translations
  @translations ||= resolve_translations_query
end

Private Instance Methods

constraints_add_component_query(query) click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 96
def constraints_add_component_query(query)
  return unless component

  query.or!(
    TermCustomizer::Constraint.where(
      organization: organization,
      subject: component
    )
  )
end
constraints_add_organization_query(query) click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 66
def constraints_add_organization_query(query)
  return unless organization

  query.or!(
    TermCustomizer::Constraint.where(
      organization: organization,
      subject_type: nil,
      subject_id: nil
    )
  )
end
constraints_add_space_query(query) click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 78
def constraints_add_space_query(query)
  return unless space

  query.or!(
    TermCustomizer::Constraint.where(
      organization: organization,
      subject: space
    )
  )
  query.or!(
    TermCustomizer::Constraint.where(
      organization: organization,
      subject_type: space.class.name,
      subject_id: nil
    )
  )
end
constraints_base_query() click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 61
def constraints_base_query
  # All constraints that are NOT attached with any organization
  TermCustomizer::Constraint.where(organization: nil)
end
resolve_constraints_query() click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 50
def resolve_constraints_query
  return nil unless organization

  query = constraints_base_query
  constraints_add_organization_query(query)
  constraints_add_space_query(query)
  constraints_add_component_query(query)

  query
end
resolve_translations_query() click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 24
def resolve_translations_query
  query = translations_base_query
  translations_add_constraints_query(query)

  query
end
translations_add_constraints_query(query) click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 36
def translations_add_constraints_query(query)
  return unless constraints

  query.or!(
    Translation.where(
      id: Translation.joins(:constraints).where(
        decidim_term_customizer_constraints: {
          id: constraints
        }
      )
    )
  )
end
translations_base_query() click to toggle source
# File lib/decidim/term_customizer/resolver.rb, line 31
def translations_base_query
  # All translations without any constraints
  Translation.where.not(id: Translation.joins(:constraints))
end