defmodule AshGraphql.Subscription do @moduledoc """ Helpers for working with absinthe subscriptions """ import AshGraphql.ContextHelpers @doc """ Produce a query that will load the correct data for a subscription. """ def query_for_subscription( query, domain, %{context: context} = resolution, type_override \\ nil, nested \\ [] ) do query |> Ash.Query.new() |> Ash.Query.set_tenant(Map.get(context, :tenant)) |> Ash.Query.set_context(get_context(context)) |> AshGraphql.Graphql.Resolver.select_fields( query.resource, resolution, type_override, nested ) |> AshGraphql.Graphql.Resolver.load_fields( [ domain: domain, tenant: Map.get(context, :tenant), authorize?: AshGraphql.Domain.Info.authorize?(domain), actor: Map.get(context, :actor) ], query.resource, resolution, resolution.path, context, type_override, nested ) end end