Packages
GrapixStatusApi is self-contained GraphQL API demo module. It implements a `serviceStatus` query and subscription; and pair of mutations to add and trim status messages. Add :grapix_status_api as a dependency in a Grapix API project to use it.
Current section
Files
Jump to
Current section
Files
lib/quoted_declarations.ex
defmodule GrapixStatusApi.QuotedDeclarations do def types() do quote do enum :status_message_severity do value(:advisory, as: "advisory") value(:critical, as: "critical") end object :status_message do field(:timestamp, :datetime) field(:message, :string) field(:level, :status_message_severity) end object :status do field(:version, :string) field(:build, :integer) field(:env, :string) field(:version_string, :string) field(:minimum_client_build, :integer) field(:messages, list_of(:status_message)) end end end def fields() do quote do alias GrapixStatusApi.Resolvers object :status_queries do @desc "Service configuration and advisory data" field :service_status, :status do resolve(&Resolvers.service_status_query/3) end end object :status_mutations do @desc "Add status advisory message" field :add_status_message, :status do arg(:message, non_null(:string)) arg(:level, :status_message_severity) resolve(&Resolvers.add_status_message_mutation/3) end @desc "Trim status advisory messages" field :trim_status_messages, :status do arg(:residual, :integer) resolve(&Resolvers.trim_status_messages_mutation/3) end end object :status_subscriptions do @desc "Real-time service advisory data" field :service_status, :status do config(&Resolvers.service_status_subscription_config/2) trigger([:add_status_message, :trim_status_messages], topic: &Resolvers.service_status_subscription_topic/1 ) resolve(&Resolvers.service_status_subscription_resolver/3) end end end end def root_field_imports(:query) do quote do import_fields(:status_queries) end end def root_field_imports(:mutation) do quote do import_fields(:status_mutations) end end def root_field_imports(:subscription) do quote do import_fields(:status_subscriptions) end end def root_field_imports(_) do quote do end endend