mirror of
https://github.com/ash-project/ash_graphql.git
synced 2024-09-21 13:53:20 +12:00
66d2f44443
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>
39 lines
841 B
Elixir
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
|