Как настроить схему Absinthe с именами полей, отличными от имен базовых полей Ecto?
Например, я хотел бы позвонить inserted_on
отметка времени created_at
в переднем конце в следующей схеме абсента:
defmodule MyAppWeb.Schema.AccountTypes do
use Absinthe.Schema.Notation
object :user do
field :id, :id
field :email, :string
field :inserted_on, :datetime
end
end
но я не уверен, как настроить отображение Ecto <-> Absinthe. Должен ли я просто добавить виртуальное поле в мою схему Ecto?
1 ответ
Одним из вариантов будет использование опции:source в схемах Ecto для полей базы данных, чтобы вы могли использовать свое собственное внутреннее имя:
defmodule MyAppWeb.Schema.AccountTypes do
use Absinthe.Schema.Notation
object :user do
field :id, :id
field :email, :string
field :created_at, :datetime, source: :inserted_on
end
end
Но лучшим вариантом, вероятно, было бы установить правильное имя поля в макросе запроса:
defmodule My.Schema do
use Absinthe.Schema
query do
field :created_at, :string do
resolve &MyResolver.inserted_on/3
end
end
.. или использовать свой собственный тип данных вместо строки..