docs: fix build/docs/credo

This commit is contained in:
Zach Daniel 2023-12-12 09:44:35 -05:00
parent 03f7f2f662
commit 7f8ec4450c
6 changed files with 730 additions and 42 deletions

View file

@ -3,13 +3,18 @@ spark_locals_without_parens = [
action_input: 1,
api: 1,
debug?: 1,
log_errors?: 1,
log_final_error?: 1,
max_attempts: 1,
max_scheduler_attempts: 1,
on_error: 1,
priority: 1,
queue: 1,
read_action: 1,
read_metadata: 1,
record_limit: 1,
schedule: 2,
schedule: 3,
scheduler_cron: 1,
scheduler_priority: 1,
scheduler_queue: 1,

View file

@ -1,3 +1,6 @@
<!--
This file was generated by Spark. Do not edit it by hand.
-->
# DSL: AshOban
Tools for working with AshOban triggers.
@ -9,6 +12,8 @@ Tools for working with AshOban triggers.
### Nested DSLs
* [triggers](#oban-triggers)
* trigger
* [scheduled_actions](#oban-scheduled_actions)
* schedule
### Examples
@ -31,9 +36,40 @@ end
### Options
| Name | Type | Default | Docs |
| --- | --- | --- | --- |
| `api`* | `module` | | The Api module to use when calling actions on this resource |
<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
@ -80,29 +116,448 @@ end
### Arguments
| Name | Type | Default | Docs |
| --- | --- | --- | --- |
| `name` | `atom` | | A unique identifier for this trigger. |
### Options
| Name | Type | Default | Docs |
| --- | --- | --- | --- |
| `action`* | `atom` | | The action to be triggered. Defaults to the identifier of the resource plus the name of the trigger |
| `scheduler_queue` | `atom` | | 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). |
| `scheduler_cron` | `String.t \| false` | "* * * * *" | A crontab configuration for when the job should run. Defaults to once per minute ("* * * * *"). Use `false` to disable the scheduler entirely. |
| `stream_batch_size` | `pos_integer` | | 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. |
| `queue` | `atom` | | The queue to place the worker job in. The trigger name is used by default. |
| `record_limit` | `pos_integer` | | If set, any given run of the scheduler will only ever schedule this many items maximum |
| `worker_priority` | `non_neg_integer` | 2 | A number from 0 to 3, where 0 is the highest priority and 3 is the lowest. |
| `scheduler_priority` | `non_neg_integer` | 3 | A number from 0 to 3, where 0 is the highest priority and 3 is the lowest. |
| `max_scheduler_attempts` | `pos_integer` | 1 | How many times to attempt scheduling of the triggered action. |
| `max_attempts` | `pos_integer` | 1 | 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. |
| `read_metadata` | `(any -> any)` | | Takes a record, and returns metadata to be given to the update action as an argument called `metadata`. |
| `state` | `:active \| :paused \| :deleted` | :active | 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*. |
| `read_action` | `atom` | | The read action to use when querying records. Defaults to the primary read. This action *must* support keyset pagination. |
| `worker_read_action` | `atom` | | 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. |
| `where` | ``any`` | | The filter expression to determine if something should be triggered |
| `on_error` | `atom` | | An update action to call after the last attempt has failed. See the getting started guide for more. |
<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-action_input" href="#name-action_input">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
action_input
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">map</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
Static inputs to supply to the update/destroy action when it is called. Any metadata produced by `read_metadata` will overwrite these values.
</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-log_errors?" href="#name-log_errors?">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
log_errors?
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">boolean</code>
</td>
<td style="text-align: left">
<code class="inline">true</code>
</td>
<td style="text-align: left" colspan=2>
Whether or not to log errors that occur when performing an action.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-log_final_error?" href="#name-log_final_error?">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
log_final_error?
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">boolean</code>
</td>
<td style="text-align: left">
<code class="inline">true</code>
</td>
<td style="text-align: left" colspan=2>
If true, logs that an error occurred on the final attempt to perform an action even if `log_errors?` is set to false.
</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>
@ -113,6 +568,244 @@ end
Target: `AshOban.Trigger`
## oban.scheduled_actions
A section for configured scheduled actions. Supports generic and create actions.
### Nested DSLs
* [schedule](#oban-scheduled_actions-schedule)
### Examples
```
scheduled_actions do
schedule :import, "0 */6 * * *", action: :import
end
```
## oban.scheduled_actions.schedule
```elixir
schedule name, cron
```
### 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-cron-name" href="#name-cron-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 scheduled action.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-cron" href="#name-cron-cron">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
cron
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">String.t</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
The schedule in crontab notation
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-action_input" href="#name-cron-action_input">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
action_input
</span>
</a>
</td>
<td style="text-align: left">
<code class="inline">map</code>
</td>
<td style="text-align: left">
</td>
<td style="text-align: left" colspan=2>
Inputs to supply to the action when it is called.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-action" href="#name-cron-action">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
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 generic or create action to call when the schedule is triggered.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-queue" href="#name-cron-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 job in. Defaults to the resources short name plus the name of the scheduled action (not the action name).
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-state" href="#name-cron-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 scheduled action from a resource if you are using oban pro*.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-max_attempts" href="#name-cron-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. The action will receive a `last_oban_attempt?` argument on the last attempt, and you should handle errors accordingly.
</td>
</tr>
<tr>
<td style="text-align: left">
<a id="name-cron-priority" href="#name-cron-priority">
<span style="font-family: Inconsolata, Menlo, Courier, monospace;">
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-cron-debug?" href="#name-cron-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>
</tbody>
</table>
### Introspection
Target: `AshOban.Schedule`

View file

@ -13,17 +13,13 @@ defmodule AshOban.Transformers.DefineActionWorkers do
dsl
|> AshOban.Info.oban_scheduled_actions()
|> Enum.reduce(dsl, fn scheduled_action, dsl ->
worker_module_name = module_name(module, scheduled_action)
worker_module_name =
module_name(module, scheduled_action)
# |> Transformer.async_compile(fn ->
# try do
define_worker(module, worker_module_name, scheduled_action, dsl)
# rescue
# e ->
# IO.inspect(e)
# end
# end)
dsl
|> Transformer.async_compile(fn ->
define_worker(module, worker_module_name, scheduled_action, dsl)
end)
|> Transformer.replace_entity([:oban, :scheduled_actions], %{
scheduled_action
| worker: worker_module_name

View file

@ -1,7 +1,6 @@
%{
"ash": {:hex, :ash, "2.15.8", "e1de02bfb08c13b24f162c0e20e7e2be2019d9df92c71c76b62178b6ab50baab", [:mix], [{:comparable, "~> 1.0", [hex: :comparable, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: true]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: false]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:spark, ">= 1.1.20 and < 2.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:stream_data, "~> 0.6", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8e85ddb64ab9b5390cea44571f9980cadba7081a0989fe77de948182770047d1"},
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
"certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"},
"comparable": {:hex, :comparable, "1.0.0", "bb669e91cedd14ae9937053e5bcbc3c52bb2f22422611f43b6e38367d94a495f", [:mix], [{:typable, "~> 0.1", [hex: :typable, repo: "hexpm", optional: false]}], "hexpm", "277c11eeb1cd726e7cd41c6c199e7e52fa16ee6830b45ad4cdc62e51f62eb60c"},
"credo": {:hex, :credo, "1.7.0", "6119bee47272e85995598ee04f2ebbed3e947678dee048d10b5feca139435f75", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "6839fcf63d1f0d1c0f450abc8564a57c43d644077ab96f2934563e68b8a769d7"},
"db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
@ -19,26 +18,19 @@
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"git_cli": {:hex, :git_cli, "0.3.0", "a5422f9b95c99483385b976f5d43f7e8233283a47cda13533d7c16131cb14df5", [:mix], [], "hexpm", "78cb952f4c86a41f4d3511f1d3ecb28edb268e3a7df278de2faa1bd4672eaf9b"},
"git_ops": {:hex, :git_ops, "2.6.0", "e0791ee1cf5db03f2c61b7ebd70e2e95cba2bb9b9793011f26609f22c0900087", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "b98fca849b18aaf490f4ac7d1dd8c6c469b0cc3e6632562d366cab095e666ffe"},
"hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~> 2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.2", "ad87296a092a46e03b7e9b0be7631ddcf64c790fa68a9ef5323b6cbb36affc72", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
"nimble_options": {:hex, :nimble_options, "1.0.2", "92098a74df0072ff37d0c12ace58574d26880e522c22801437151a159392270e", [:mix], [], "hexpm", "fd12a8db2021036ce12a309f26f564ec367373265b53e25403f0ee697380f1b8"},
"nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
"oban": {:hex, :oban, "2.15.4", "d49ab4ffb7153010e32f80fe9e56f592706238149ec579eb50f8a4e41d218856", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5fce611fdfffb13e9148df883116e5201adf1e731eb302cc88cde0588510079c"},
"oban_pro": {:hex, :oban_pro, "1.0.2", "fa25f84f24c665f0f812321a35ef37eaa5e6e929782727226becb9ea2cf05eb3", [:mix], [{:ecto_sql, "~> 3.8", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.13", [hex: :libgraph, repo: "hexpm", optional: true]}, {:oban, "~> 2.15.4", [hex: :oban, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}], "oban", "65b87d47f08d43c39ad5c026e2c86392296d29c028011d92670baf7032e93760"},
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
"picosat_elixir": {:hex, :picosat_elixir, "0.2.3", "bf326d0f179fbb3b706bb2c15fbc367dacfa2517157d090fdfc32edae004c597", [:make, :mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "f76c9db2dec9d2561ffaa9be35f65403d53e984e8cd99c832383b7ab78c16c66"},
"sobelow": {:hex, :sobelow, "0.13.0", "218afe9075904793f5c64b8837cc356e493d88fddde126a463839351870b8d1e", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cd6e9026b85fc35d7529da14f95e85a078d9dd1907a9097b3ba6ac7ebbe34a0d"},
"sourceror": {:hex, :sourceror, "0.14.0", "b6b8552d0240400d66b6f107c1bab7ac1726e998efc797f178b7b517e928e314", [:mix], [], "hexpm", "809c71270ad48092d40bbe251a133e49ae229433ce103f762a2373b7a10a8d8b"},
"spark": {:hex, :spark, "1.1.41", "c34c7bec8b91f8af05690b5500b5287a319c10887a2e1db6fa5e203289ba62c8", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.5 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:sourceror, "~> 0.1", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "908548f3cbf84d402869e1caf7b5a78492e7d171fe492affc02748f2a51746ff"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},
"stream_data": {:hex, :stream_data, "0.6.0", "e87a9a79d7ec23d10ff83eb025141ef4915eeb09d4491f79e52f2562b73e5f47", [:mix], [], "hexpm", "b92b5031b650ca480ced047578f1d57ea6dd563f5b57464ad274718c9c29501c"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"typable": {:hex, :typable, "0.3.0", "0431e121d124cd26f312123e313d2689b9a5322b15add65d424c07779eaa3ca1", [:mix], [], "hexpm", "880a0797752da1a4c508ac48f94711e04c86156f498065a83d160eef945858f8"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
}

View file

@ -1,4 +1,5 @@
defmodule AshOban.Test.Api do
@moduledoc false
use Ash.Api
resources do

View file

@ -1,4 +1,5 @@
defmodule AshOban.Test.Triggered do
@moduledoc false
use Ash.Resource,
data_layer: Ash.DataLayer.Ets,
extensions: [AshOban]