ash/documentation/dsls/DSL:-Ash.Notifier.PubSub.md
Zach Daniel 2233a33523 improvement: support tenancy on manual actions
docs: update cheat shets
fix: honor tenant option on aggregates

closes #805
2023-12-16 10:33:10 -05:00

3.8 KiB

DSL: Ash.Notifier.PubSub

A pubsub notifier extension.

pub_sub

A section for configuring how resource actions are published over pubsub

See the PubSub and Notifiers guide for more.

Nested DSLs

Examples

pub_sub do
  module MyEndpoint
  prefix "post"

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

Options

Name Type Default Docs
module{: #pub_sub-module .spark-required} atom The module to call broadcast/3 on e.g module.broadcast(topic, event, message).
prefix{: #pub_sub-prefix } String.t A prefix for all pubsub messages, e.g users. A message with created would be published as users:created
broadcast_type{: #pub_sub-broadcast_type } :notification | :phoenix_broadcast | :broadcast :notification What shape the event payloads will be in. See
name{: #pub_sub-name } atom A named pub sub to pass as the first argument to broadcast.

pub_sub.publish

publish action, topic

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

See the PubSub and Notifiers guides for more.

Examples

publish :create, "created"
publish :assign, "assigned"

Arguments

Name Type Default Docs
action{: #pub_sub-publish-action .spark-required} atom The name of the action that should be published
topic{: #pub_sub-publish-topic .spark-required} any The topic to publish

Options

Name Type Default Docs
event{: #pub_sub-publish-event } String.t The name of the event to publish. Defaults to the action name
dispatcher{: #pub_sub-publish-dispatcher } atom The module to use as a dispatcher. If none is set, the pubsub module provided is used.

Introspection

Target: Ash.Notifier.PubSub.Publication

pub_sub.publish_all

publish_all type, topic

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

See the PubSub and Notifiers guides for more.

Examples

publish_all :create, "created"

Arguments

Name Type Default Docs
type{: #pub_sub-publish_all-type } :create | :update | :destroy Publish on all actions of a given type
topic{: #pub_sub-publish_all-topic .spark-required} any The topic to publish

Options

Name Type Default Docs
action{: #pub_sub-publish_all-action } atom The name of the action that should be published
event{: #pub_sub-publish_all-event } String.t The name of the event to publish. Defaults to the action name
dispatcher{: #pub_sub-publish_all-dispatcher } atom The module to use as a dispatcher. If none is set, the pubsub module provided is used.

Introspection

Target: Ash.Notifier.PubSub.Publication