From 1bca4dbf8251ce95ad66d6e95713be02a03f092c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Geonizeli?= Date: Thu, 21 Jul 2022 14:42:41 -0300 Subject: [PATCH] add currentUser query --- app/graphql/enums/role_enum.rb | 9 +++++++++ app/graphql/types/base_enum.rb | 8 ++++++-- app/graphql/types/query_type.rb | 6 ++++++ app/graphql/types/user_type.rb | 16 ++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 app/graphql/enums/role_enum.rb create mode 100644 app/graphql/types/user_type.rb diff --git a/app/graphql/enums/role_enum.rb b/app/graphql/enums/role_enum.rb new file mode 100644 index 0000000..5a48d46 --- /dev/null +++ b/app/graphql/enums/role_enum.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Enums + class RoleEnum < Types::BaseEnum + graphql_name "UserRole" + + values(%w[admin teacher nde coordinator center_director pro_rector]) + end +end diff --git a/app/graphql/types/base_enum.rb b/app/graphql/types/base_enum.rb index 71b3973..c9d4bf2 100644 --- a/app/graphql/types/base_enum.rb +++ b/app/graphql/types/base_enum.rb @@ -1,7 +1,11 @@ module Types class BaseEnum < GraphQL::Schema::Enum - def self.values_from_enumerize(enum_values) - enum_values.values.each do |enum_value| + def self.values_from_enumerize(enum) + values(enum.values) + end + + def self.values(enum_values) + enum_values.each do |enum_value| value enum_value.upcase, value: enum_value end end diff --git a/app/graphql/types/query_type.rb b/app/graphql/types/query_type.rb index 7600500..4bc8c33 100644 --- a/app/graphql/types/query_type.rb +++ b/app/graphql/types/query_type.rb @@ -8,8 +8,14 @@ module Types argument :where, Inputs::QuestionWhereInput, required: false end + field :current_user, Types::UserType, null: true + def questions(where: nil) Resolvers::QuestionsQueryResolver.new(Question, context: context, where: where).resolve end + + def current_user + context[:current_user] + end end end diff --git a/app/graphql/types/user_type.rb b/app/graphql/types/user_type.rb new file mode 100644 index 0000000..92a4cdf --- /dev/null +++ b/app/graphql/types/user_type.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module Types + class UserType < Types::BaseObject + graphql_name "User" + + field :id, ID, null: false + field :name, String, null: false + field :email, String, null: false + field :roles, [Enums::RoleEnum], null: false + + def roles + object.roles.map(&:name) + end + end +end