ash_graphql/test/support/relay_ids/resources/post.ex
Riccardo Binetti 513c1ac68f
improvement!: port AshGraphql to Ash 3.0 (#123)
Step 1: update Ash

Step 2: mass rename Api to Domain

Step 3: Ash.Query.expr -> Ash.Expr.expr

Also change ref interpolation

Step 4: remove all warnings

Step 5: remove registries from tests

Step 6: fix filter

Step 7: private? -> !public?

Step 8: Ash.Calculation -> Ash.Resource.Calculation

Step 9: use depend_on_resources/1 -> resources/1

Step 10: add Domain to all resources

Step 11: use Ash module for all actions

Step 12: add public? true all around

Step 13: remove verbose? from options passed during Domain calls

Step 14: add simple_sat

Step 15: Ash.ErrorKind is no more, so remove code from errors

Step 16: sprinkle default_accept :* around tests

Step 17: replace Ash.Changeset.new/2 with Ash.Changeset.for_*

Step 18: calculation fixups

- Context is now a struct and arguments go under the arguments key
- Function based calculations receive a list of records
- Add a select to query-based loads
- select -> load

Step 19: pass the correct name to pass the policy in tests

Step 20: Ash.Query.new/2 is no more

Step 21: add AshGraphql.Resource.embedded? utility function

Use that instead of Ash.Type.embedded_type?(resource_or_type) since resources
are not types anymore

Step 22: handle struct + instance_of: Resource in unions

Resources are not type anymore so they need to be passed this way in unions

Step 23: ensure we only check GraphQL actions for pagination

All reads are now paginated by default, so this triggered a compilation error

Step 24: swap arguments for sort on calculations

Step 25: remove unused debug? option
2024-04-01 14:03:06 -04:00

56 lines
1.2 KiB
Elixir

defmodule AshGraphql.Test.RelayIds.Post do
@moduledoc false
use Ash.Resource,
domain: AshGraphql.Test.RelayIds.Domain,
data_layer: Ash.DataLayer.Ets,
extensions: [AshGraphql.Resource]
require Ash.Query
graphql do
type :post
queries do
get :get_post, :read
list :post_library, :read
end
mutations do
create :simple_create_post, :create, relay_id_translations: [input: [author_id: :user]]
update :update_post, :update
update :assign_author, :assign_author, relay_id_translations: [input: [author_id: :user]]
destroy :delete_post, :destroy
end
end
actions do
default_accept(:*)
defaults([:update, :read, :destroy])
create :create do
primary?(true)
argument(:author_id, :uuid)
change(set_attribute(:author_id, arg(:author_id)))
end
update :assign_author do
argument(:author_id, :uuid)
change(set_attribute(:author_id, arg(:author_id)))
end
end
attributes do
uuid_primary_key(:id)
attribute(:text, :string, public?: true)
end
relationships do
belongs_to(:author, AshGraphql.Test.RelayIds.User) do
public?(true)
attribute_writable?(true)
end
end
end