mirror of
https://github.com/ash-project/ash_graphql.git
synced 2024-09-21 05:43:28 +12:00
65 lines
1.2 KiB
Elixir
65 lines
1.2 KiB
Elixir
defmodule AshGraphql.Test.Comment do
|
|
@moduledoc false
|
|
|
|
use Ash.Resource,
|
|
domain: AshGraphql.Test.Domain,
|
|
data_layer: Ash.DataLayer.Ets,
|
|
extensions: [AshGraphql.Resource]
|
|
|
|
graphql do
|
|
type :comment
|
|
|
|
queries do
|
|
list :list_comments, :read
|
|
end
|
|
|
|
mutations do
|
|
create :create_comment, :create
|
|
end
|
|
end
|
|
|
|
actions do
|
|
default_accept(:*)
|
|
defaults([:create, :update, :destroy])
|
|
|
|
read :read do
|
|
primary?(true)
|
|
end
|
|
|
|
read :paginated do
|
|
pagination(required?: true, offset?: true, countable: true)
|
|
end
|
|
end
|
|
|
|
attributes do
|
|
uuid_primary_key(:id)
|
|
attribute(:text, :string, public?: true)
|
|
|
|
attribute :type, :atom do
|
|
public?(true)
|
|
writable?(false)
|
|
default(:comment)
|
|
constraints(one_of: [:comment, :reply])
|
|
end
|
|
|
|
create_timestamp(:created_at)
|
|
end
|
|
|
|
calculations do
|
|
calculate(
|
|
:timestamp,
|
|
:utc_datetime_usec,
|
|
expr(created_at),
|
|
public?: true
|
|
)
|
|
end
|
|
|
|
relationships do
|
|
belongs_to(:post, AshGraphql.Test.Post, public?: true)
|
|
|
|
belongs_to :author, AshGraphql.Test.User do
|
|
public?(true)
|
|
attribute_writable?(true)
|
|
end
|
|
end
|
|
end
|