Skip to content

Instantly share code, notes, and snippets.

@xadhoom
Created September 7, 2017 14:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xadhoom/e7f8e2cc6e9500aca574f63c8ebfa6c7 to your computer and use it in GitHub Desktop.
Save xadhoom/e7f8e2cc6e9500aca574f63c8ebfa6c7 to your computer and use it in GitHub Desktop.
defmodule HPortal.Schema do
@moduledoc """
HPortal GraphQL schema entry point
"""
use Absinthe.Schema
def middleware(middleware, _ , _) do
middleware ++ [HPortal.Schema.Middleware.AuthorizeErrors]
end
import_types __MODULE__.User
import_types __MODULE__.UserQueries
import_types __MODULE__.Foo
import_types __MODULE__.FooQueries
query do
import_fields :user_queries
import_fields :foo_queries
end
end
defmodule HPortal.Schema.User do
@moduledoc false
use Absinthe.Schema.Notation
object :user do
field :name, :string
end
end
defmodule HPortal.Schema.UserQueries do
@moduledoc false
use Absinthe.Schema.Notation
object :user_queries do
field :user, :user do
#resolve fn(_, _) -> {:error, :unauthorized} end
resolve fn(_, _) -> {:ok, %{name: "foo bar"}} end
end
end
end
defmodule HPortal.Schema.Foo do
@moduledoc false
use Absinthe.Schema.Notation
object :foo do
field :what, :string
end
end
defmodule HPortal.Schema.FooQueries do
@moduledoc false
use Absinthe.Schema.Notation
object :foo_queries do
field :foo, :foo do
resolve fn(_, _) -> {:ok, %{what: "im foo"}} end
end
end
end
defmodule HPortal.Schema.Middleware.AuthorizeErrors do
@behaviour Absinthe.Middleware
def call(res, _) do
res
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment