ash_graphql/test/support/relay_ids/resources/user.ex
Riccardo Binetti 66d2f44443
feat: add Relay ID translation in mutation and queries (#109)
Adds a new option for queries and mutations that defines which arguments or
attributes will use a global Relay ID and their type. This allows automatically
decoding them before hitting their action.

This paves the way to automatic translation derived from the arguments, which
will be implemented subsequently.

---------

Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-02-06 09:46:09 -05:00

39 lines
841 B
Elixir

defmodule AshGraphql.Test.RelayIds.User do
@moduledoc false
use Ash.Resource,
data_layer: Ash.DataLayer.Ets,
extensions: [AshGraphql.Resource]
graphql do
type :user
queries do
get :get_user, :read
end
mutations do
create :create_user, :create
update :assign_posts, :assign_posts, relay_id_translations: [input: [post_ids: :post]]
end
end
actions do
defaults([:create, :update, :destroy, :read])
update :assign_posts do
argument(:post_ids, {:array, :uuid})
change(manage_relationship(:post_ids, :posts, value_is_key: :id, type: :append_and_remove))
end
end
attributes do
uuid_primary_key(:id)
attribute(:name, :string)
end
relationships do
has_many(:posts, AshGraphql.Test.RelayIds.Post, destination_attribute: :author_id)
end
end