[day-04] expose training in graphql

This commit is contained in:
Joao P Dubas 2021-06-26 17:31:59 +00:00
parent d5faec5f65
commit eaac531e0b
3 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,5 @@
defmodule WabanexWeb.Resolvers.Training do
alias Wabanex.Trainings
def create(%{input: params}, _context), do: Trainings.Create.call(params)
end

View File

@ -4,10 +4,12 @@ defmodule WabanexWeb.Schema.Types.Root do
alias Crudry.Middlewares.TranslateErrors
alias WabanexWeb.Resolvers.User, as: UserResolver
alias WabanexWeb.Resolvers.Training, as: TrainingResolver
alias WabanexWeb.Schema.Types
import_types Types.Custom.UUID4
import_types Types.User
import_types Types.Training
object :root_query do
field :get_user, type: :user do
@ -24,5 +26,12 @@ defmodule WabanexWeb.Schema.Types.Root do
resolve &UserResolver.create/2
middleware TranslateErrors
end
field :create_training, type: :training do
arg :input, non_null(:create_training_input)
resolve &TrainingResolver.create/2
middleware TranslateErrors
end
end
end

View File

@ -0,0 +1,16 @@
defmodule WabanexWeb.Schema.Types.Training do
use Absinthe.Schema.Notation
@desc "Logic training representation"
object :training do
field :id, non_null(:uuid4)
field :start_date, non_null(:string)
field :end_date, :string
end
input_object :create_training_input do
field :user_id, non_null(:uuid4)
field :start_date, non_null(:string)
field :end_date, :string
end
end