mirror of
https://github.com/ash-project/ash.git
synced 2024-09-21 22:13:02 +12:00
3d30fd848f
fixes #883
143 lines
4.4 KiB
Markdown
143 lines
4.4 KiB
Markdown
<!--
|
|
This file was generated by Spark. Do not edit it by hand.
|
|
-->
|
|
# DSL: Ash.Notifier.PubSub
|
|
|
|
A pubsub notifier extension.
|
|
|
|
|
|
## pub_sub
|
|
A section for configuring how resource actions are published over pubsub
|
|
|
|
See the [PubSub](/documentation/topics/pub_sub.md) and [Notifiers](/documentation/topics/notifiers.md) guide for more.
|
|
|
|
|
|
### Nested DSLs
|
|
* [publish](#pub_sub-publish)
|
|
* [publish_all](#pub_sub-publish_all)
|
|
|
|
|
|
### 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){: #pub_sub-module .spark-required} | `atom` | | The module to call `broadcast/3` on e.g module.broadcast(topic, event, message). |
|
|
| [`prefix`](#pub_sub-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` |
|
|
| [`delimiter`](#pub_sub-delimiter){: #pub_sub-delimiter } | `String.t` | | A delimiter for building topics. Default is a colon (:) |
|
|
| [`broadcast_type`](#pub_sub-broadcast_type){: #pub_sub-broadcast_type } | `:notification \| :phoenix_broadcast \| :broadcast` | `:notification` | What shape the event payloads will be in. See |
|
|
| [`name`](#pub_sub-name){: #pub_sub-name } | `atom` | | A named pub sub to pass as the first argument to broadcast. |
|
|
|
|
|
|
|
|
## pub_sub.publish
|
|
```elixir
|
|
publish action, topic
|
|
```
|
|
|
|
|
|
Configure a given action to publish its results over a given topic.
|
|
|
|
See the [PubSub](/documentation/topics/pub_sub.md) and [Notifiers](/documentation/topics/notifiers.md) guides for more.
|
|
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
publish :create, "created"
|
|
```
|
|
|
|
```
|
|
publish :assign, "assigned"
|
|
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`action`](#pub_sub-publish-action){: #pub_sub-publish-action .spark-required} | `atom` | | The name of the action that should be published |
|
|
| [`topic`](#pub_sub-publish-topic){: #pub_sub-publish-topic .spark-required} | ``any`` | | The topic to publish |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`previous_values?`](#pub_sub-publish-previous_values?){: #pub_sub-publish-previous_values? } | `boolean` | `true` | Whether or not to publish messages with both the new values and the old values for referencing changed attributes |
|
|
| [`event`](#pub_sub-publish-event){: #pub_sub-publish-event } | `String.t` | | The name of the event to publish. Defaults to the action name |
|
|
| [`dispatcher`](#pub_sub-publish-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
|
|
```elixir
|
|
publish_all type, topic
|
|
```
|
|
|
|
|
|
Works just like `publish`, except that it takes a type
|
|
and publishes all actions of that type
|
|
|
|
See the [PubSub](/documentation/topics/pub_sub.md) and [Notifiers](/documentation/topics/notifiers.md) guides for more.
|
|
|
|
|
|
|
|
|
|
### Examples
|
|
```
|
|
publish_all :create, "created"
|
|
```
|
|
|
|
|
|
|
|
### Arguments
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`type`](#pub_sub-publish_all-type){: #pub_sub-publish_all-type } | `:create \| :update \| :destroy` | | Publish on all actions of a given type |
|
|
| [`topic`](#pub_sub-publish_all-topic){: #pub_sub-publish_all-topic .spark-required} | ``any`` | | The topic to publish |
|
|
### Options
|
|
|
|
| Name | Type | Default | Docs |
|
|
|------|------|---------|------|
|
|
| [`action`](#pub_sub-publish_all-action){: #pub_sub-publish_all-action } | `atom` | | The name of the action that should be published |
|
|
| [`previous_values?`](#pub_sub-publish_all-previous_values?){: #pub_sub-publish_all-previous_values? } | `boolean` | `true` | Whether or not to publish messages with both the new values and the old values for referencing changed attributes |
|
|
| [`event`](#pub_sub-publish_all-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){: #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`
|
|
|
|
|
|
|
|
|
|
|
|
<style type="text/css">.spark-required::after { content: "*"; color: red !important; }</style>
|