ash v1.36.0 Ash.Notifier.PubSub View Source

A pubsub notifier extension

Table of Contents

pub_sub

A section for configuring how resource actions are published over pubsub

Examples:

pub_sub do
  module MyEndpoint
  prefix "post"

  publish :destroy, ["foo", :id]
  publish :update, ["bar", :name] event: "name_change"
  publish_all :create, "created"
end

  • :module - Required. The module to call broadcast/3 on e.g module.broadcast(topic, event, message).

  • :prefix - A prefix for all pubsub messages, e.g users. A message with created would be published as users:created

publish

Configure a given action to publish its results over a given topic.

If you have multiple actions with the same name (only possible if they have different types), use the type option, to specify which type you are referring to. Otherwise the message will be broadcast for all actions with that name.

To include attribute values of the resource in the message, pass a list of strings and attribute names. They will ultimately be joined with :. For example:

prefix "user"

publish :create, ["created", :user_id]

This might publish a message to "user:created:1"" for example.

For updates, if the field in the template is being changed, a message is sent to both values. So if you change user 1 to user 2, the same message would be published to user:updated:1 and user:updated:2. If there are multiple attributes in the template, and they are all being changed, a message is sent for every combination of substitutions.

Introspection Target:

Ash.Notifier.PubSub.Publication

Examples:

publish :create, "created"
publish :assign, "assigned"
  • :action - Required. The name of the action that should be published

  • :topic - Required. The topic to publish

  • :event - The name of the event to publish. Defaults to the action name

publish_all

Works just like publish, except that it takes a type and publishes all actions of that type

Introspection Target:

Ash.Notifier.PubSub.Publication

Examples:

publish_all :create, "created"
  • :type - In the case of multiple actions with the same name, you may need to provide the action type as well.

  • :action - The name of the action that should be published

  • :topic - Required. The topic to publish

  • :event - The name of the event to publish. Defaults to the action name

Link to this section Summary

Link to this section Functions