Packages
ash_graphql
1.7.13
1.10.0
1.9.4
1.9.3
1.9.2
1.9.1
1.9.0
1.8.5
1.8.4
1.8.3
1.8.2
1.8.1
1.8.0
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.0
1.5.1
1.5.0
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.5
1.0.0-rc.4
retired
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.28.1
0.28.0
0.27.1
0.27.0
0.26.9
0.26.8
0.26.7
0.26.6
0.26.5
0.26.4
0.26.3
0.26.2
0.26.0
0.25.13
0.25.12
0.25.10
0.25.9
0.25.8
0.25.7
0.25.6
0.25.5
0.25.4
0.25.3
0.25.2
0.25.1
0.25.0
0.24.1
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.13
0.22.12
0.22.11
0.22.10
0.22.9
0.22.8
0.22.7
0.22.6
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
retired
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0-rc.3
0.20.0-rc.2
0.20.0-rc.1
0.20.0-rc.0
0.19.0
0.18.0-rc0
0.17.5
0.17.5-rc0
0.17.4
0.17.2
0.17.1
0.17.0
0.16.28
0.16.27
0.16.26
0.16.25
0.16.24
0.16.23
0.16.22
0.16.21
0.16.20
0.16.18-rc5
0.16.18-rc4
0.16.18-rc3
0.16.18-rc2
0.16.18-rc1
0.16.18-rc0
0.16.17
0.16.16
0.16.15
0.16.14
0.16.13
0.16.12
0.16.11
0.16.10
0.16.9
0.16.8
0.16.7
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.1
0.12.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
The extension for building GraphQL APIs with Ash
Current section
Files
Jump to
Current section
Files
lib/resource/verifiers/verify_subscription_actions.ex
defmodule AshGraphql.Resource.Verifiers.VerifySubscriptionActions do
# Validates the paginate_relationship_with option
@moduledoc false
use Spark.Dsl.Verifier
alias Spark.Dsl.Transformer
def verify(dsl) do
dsl
|> AshGraphql.Resource.Info.subscriptions(Ash.Resource.Info.domain(dsl))
|> Enum.each(&verify_actions(dsl, &1))
:ok
end
defp verify_actions(dsl, subscription) do
unless MapSet.subset?(
MapSet.new(List.wrap(subscription.action_types)),
MapSet.new([:create, :update, :destroy])
) do
raise Spark.Error.DslError,
module: Transformer.get_persisted(dsl, :module),
message: "`action_types` values must be on of `[:create, :update, :destroy]`.",
path: [:graphql, :subscriptions, subscription.name, :action_types]
end
missing_write_actions =
MapSet.difference(
MapSet.new(List.wrap(subscription.actions)),
MapSet.new(
Ash.Resource.Info.actions(dsl)
|> Stream.filter(&(&1.type in [:create, :update, :destroy]))
|> Enum.map(& &1.name)
)
)
unless Enum.empty?(missing_write_actions) do
raise Spark.Error.DslError,
module: Transformer.get_persisted(dsl, :module),
message:
"The actions #{Enum.join(missing_write_actions, ", ")} do not exist on the resource.",
path: [:graphql, :subscriptions, subscription.name, :actions]
end
unless is_nil(subscription.read_action) or
subscription.read_action in (Ash.Resource.Info.actions(dsl)
|> Stream.filter(&(&1.type == :read))
|> Enum.map(& &1.name)) do
raise Spark.Error.DslError,
module: Transformer.get_persisted(dsl, :module),
message: "The read action #{subscription.read_action} does not exist on the resource.",
path: [:graphql, :subscriptions, subscription.name, :read_action]
end
end
end