Class: Decidim::Api::QueryType

Inherits:
Types::BaseObject show all
Defined in:
lib/decidim/api/query_type.rb

Overview

This type represents the root query type of the whole API.

Instance Method Summary collapse

Methods inherited from Types::BaseObject

#current_component, #current_organization, #current_user

Instance Method Details

#component(id: {}) ⇒ Object



42
43
44
45
# File 'lib/decidim/api/query_type.rb', line 42

def component(id: {})
  component = Decidim::Component.published.find_by(id:)
  component&.organization == context[:current_organization] ? component : nil
end

#decidimObject



51
52
53
# File 'lib/decidim/api/query_type.rb', line 51

def decidim
  Decidim
end

#moderated_usersObject



92
93
94
# File 'lib/decidim/api/query_type.rb', line 92

def moderated_users
  Decidim::UserModeration.joins(:user).where(decidim_users: { decidim_organization_id: organization&.id }).where.not(decidim_users: { blocked_at: nil })
end

#moderationsObject



96
97
98
# File 'lib/decidim/api/query_type.rb', line 96

def moderations
  Decidim::Moderation.where(participatory_space: organization.participatory_spaces).includes(:reports).hidden
end

#organizationObject



55
56
57
# File 'lib/decidim/api/query_type.rb', line 55

def organization
  context[:current_organization]
end

#participant_details(id: nil, nickname: nil) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/decidim/api/query_type.rb', line 67

def participant_details(id: nil, nickname: nil)
  participant = Decidim::Core::UserEntityFinder.new.call(object, { id:, nickname: }, context)
  return nil unless participant

  return nil unless Decidim::Core::ParticipantDetailsType.authorized?(participant, context)

  Decidim::ActionLogger.log(
    "read",
    context[:current_user],
    participant,
    nil,
    {}
  )

  participant
end

#sessionObject



47
48
49
# File 'lib/decidim/api/query_type.rb', line 47

def session
  context[:current_user]
end

#static_page_topicsObject



88
89
90
# File 'lib/decidim/api/query_type.rb', line 88

def static_page_topics
  static_pages.collect(&:topic).uniq.compact_blank
end

#static_pagesObject



84
85
86
# File 'lib/decidim/api/query_type.rb', line 84

def static_pages
  Decidim::StaticPage.accessible_for(organization, context[:current_user])
end

#user(id: nil, nickname: nil) ⇒ Object



59
60
61
# File 'lib/decidim/api/query_type.rb', line 59

def user(id: nil, nickname: nil)
  Core::UserEntityFinder.new.call(object, { id:, nickname: }, context)
end

#users(filter: {}, order: {}) ⇒ Object



63
64
65
# File 'lib/decidim/api/query_type.rb', line 63

def users(filter: {}, order: {})
  Core::UserEntityList.new.call(object, { filter:, order: }, context)
end