Current section

Files

Jump to
ash_oban documentation dsls DSL:-AshOban.cheatmd
Raw

documentation/dsls/DSL:-AshOban.cheatmd

<!--
This file was generated by Spark. Do not edit it by hand.
-->
# DSL: AshOban
Tools for working with AshOban triggers.
## oban
### Nested DSLs
* [triggers](#oban-triggers)
* trigger
### Examples
```
oban do
api AshOban.Test.Api
triggers do
trigger :process do
action :process
where expr(processed != true)
worker_read_action(:read)
end
end
end
```
### Options
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th colspan=2>Docs</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a id="oban-api" href="#oban-api">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
api
</span>
</a>
<sup style="color: red">*</sup>
</td>
<td style="text-align: left">
<code class="inline">module</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The Api module to use when calling actions on this resource
</td>
</tr>
</tbody>
</table>
## oban.triggers
### Nested DSLs
* [trigger](#oban-triggers-trigger)
### Examples
```
triggers do
trigger :process do
action :process
where expr(processed != true)
worker_read_action(:read)
end
end
```
## oban.triggers.trigger
```elixir
trigger name
```
### Examples
```
trigger :process do
action :process
where expr(processed != true)
worker_read_action(:read)
end
```
### Options
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th colspan=2>Docs</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a id="name-action" href="#name-action">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
action
</span>
</a>
<sup style="color: red">*</sup>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The action to be triggered. Defaults to the identifier of the resource plus the name of the trigger
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-name" href="#name-name">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
name
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
A unique identifier for this trigger.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-scheduler_queue" href="#name-scheduler_queue">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
scheduler_queue
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The queue to place the scheduler job in. The same queue as job is used by default (but with a priority of 1 so schedulers run first).
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-debug?" href="#name-debug?">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
debug?
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">boolean</code>
</td>
<td style="text-align: left">
<code class="inline">false</code>
</td>
<td style="text-align: left" colspan=2>
If set to `true`, detailed debug logging will be enabled for this trigger. You can also set `config :ash_oban, debug_all_triggers?: true` to enable debug logging for all triggers.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-scheduler_cron" href="#name-scheduler_cron">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
scheduler_cron
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">String.t | false</code>
</td>
<td style="text-align: left">
<code class="inline">"* * * * *"</code>
</td>
<td style="text-align: left" colspan=2>
A crontab configuration for when the job should run. Defaults to once per minute ("* * * * *"). Use `false` to disable the scheduler entirely.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-stream_batch_size" href="#name-stream_batch_size">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
stream_batch_size
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">pos_integer</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The batch size to pass when streaming records from using `c:Ash.Api.stream!/2`. No batch size is passed if none is provided here, so the default is used.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-queue" href="#name-queue">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
queue
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The queue to place the worker job in. The trigger name is used by default.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-record_limit" href="#name-record_limit">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
record_limit
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">pos_integer</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
If set, any given run of the scheduler will only ever schedule this many items maximum
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-worker_priority" href="#name-worker_priority">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
worker_priority
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">non_neg_integer</code>
</td>
<td style="text-align: left">
<code class="inline">2</code>
</td>
<td style="text-align: left" colspan=2>
A number from 0 to 3, where 0 is the highest priority and 3 is the lowest.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-scheduler_priority" href="#name-scheduler_priority">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
scheduler_priority
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">non_neg_integer</code>
</td>
<td style="text-align: left">
<code class="inline">3</code>
</td>
<td style="text-align: left" colspan=2>
A number from 0 to 3, where 0 is the highest priority and 3 is the lowest.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-max_scheduler_attempts" href="#name-max_scheduler_attempts">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
max_scheduler_attempts
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">pos_integer</code>
</td>
<td style="text-align: left">
<code class="inline">1</code>
</td>
<td style="text-align: left" colspan=2>
How many times to attempt scheduling of the triggered action.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-max_attempts" href="#name-max_attempts">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
max_attempts
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">pos_integer</code>
</td>
<td style="text-align: left">
<code class="inline">1</code>
</td>
<td style="text-align: left" colspan=2>
How many times to attempt the job. After all attempts have been exhausted, the scheduler may just reschedule it. Use the `on_error` action to update the record to make the scheduler no longer apply.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-read_metadata" href="#name-read_metadata">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
read_metadata
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">(any -> any)</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
Takes a record, and returns metadata to be given to the update action as an argument called `metadata`.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-state" href="#name-state">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
state
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">:active | :paused | :deleted</code>
</td>
<td style="text-align: left">
<code class="inline">:active</code>
</td>
<td style="text-align: left" colspan=2>
Describes the state of the cron job. See the getting started guide for more information. The most important thing is that you *do not remove a trigger from a resource if you are using oban pro*.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-read_action" href="#name-read_action">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
read_action
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The read action to use when querying records. Defaults to the primary read. This action *must* support keyset pagination.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-worker_read_action" href="#name-worker_read_action">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
worker_read_action
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The read action to use when fetching the individual records for the trigger. Defaults to `read_action`. If you customize this, ensure your action handles scenarios where the trigger is no longer relevant.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-where" href="#name-where">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
where
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">`any`</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The filter expression to determine if something should be triggered
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-on_error" href="#name-on_error">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
on_error
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">atom</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
An update action to call after the last attempt has failed. See the getting started guide for more.
</td>
</tr>
</tbody>
</table>
### Introspection
Target: `AshOban.Trigger`