diff --git a/.formatter.exs b/.formatter.exs index 52f3c2b..cd7ba9e 100644 --- a/.formatter.exs +++ b/.formatter.exs @@ -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, diff --git a/documentation/dsls/DSL:-AshOban.cheatmd b/documentation/dsls/DSL:-AshOban.cheatmd index d9f030f..671b7b9 100644 --- a/documentation/dsls/DSL:-AshOban.cheatmd +++ b/documentation/dsls/DSL:-AshOban.cheatmd @@ -1,3 +1,6 @@ + # 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 | + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDocs
+ + + api + + + * + + + module + + + + The Api module to use when calling actions on this resource +
## 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. | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDocs
+ + + action + + + * + + + atom + + + + The action to be triggered. Defaults to the identifier of the resource plus the name of the trigger +
+ + + name + + + + + atom + + + + A unique identifier for this trigger. +
+ + + action_input + + + + + map + + + + Static inputs to supply to the update/destroy action when it is called. Any metadata produced by `read_metadata` will overwrite these values. +
+ + + 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). +
+ + + debug? + + + + + boolean + + false + + 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. +
+ + + 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 +
+ + + log_errors? + + + + + boolean + + true + + Whether or not to log errors that occur when performing an action. +
+ + + log_final_error? + + + + + boolean + + true + + If true, logs that an error occurred on the final attempt to perform an action even if `log_errors?` is set to false. +
+ + + 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. +
@@ -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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDocs
+ + + name + + + + + atom + + + + A unique identifier for this scheduled action. +
+ + + cron + + + + + String.t + + + + The schedule in crontab notation +
+ + + action_input + + + + + map + + + + Inputs to supply to the action when it is called. +
+ + + action + + + + + atom + + + + The generic or create action to call when the schedule is triggered. +
+ + + queue + + + + + atom + + + + The queue to place the job in. Defaults to the resources short name plus the name of the scheduled action (not the action name). +
+ + + 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 scheduled action from a resource if you are using oban pro*. + +
+ + + max_attempts + + + + + pos_integer + + 1 + + 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. + +
+ + + priority + + + + + non_neg_integer + + 3 + + A number from 0 to 3, where 0 is the highest priority and 3 is the lowest. +
+ + + debug? + + + + + boolean + + false + + 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. +
+ + + + + +### Introspection + +Target: `AshOban.Schedule` + + diff --git a/lib/transformers/define_action_workers.ex b/lib/transformers/define_action_workers.ex index 7910692..b893e29 100644 --- a/lib/transformers/define_action_workers.ex +++ b/lib/transformers/define_action_workers.ex @@ -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 diff --git a/mix.lock b/mix.lock index 49633bb..d8ad55c 100644 --- a/mix.lock +++ b/mix.lock @@ -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"}, } diff --git a/test/support/api.ex b/test/support/api.ex index 637c5f1..496033f 100644 --- a/test/support/api.ex +++ b/test/support/api.ex @@ -1,4 +1,5 @@ defmodule AshOban.Test.Api do + @moduledoc false use Ash.Api resources do diff --git a/test/support/triggered.ex b/test/support/triggered.ex index dfcd5de..021dcec 100644 --- a/test/support/triggered.ex +++ b/test/support/triggered.ex @@ -1,4 +1,5 @@ defmodule AshOban.Test.Triggered do + @moduledoc false use Ash.Resource, data_layer: Ash.DataLayer.Ets, extensions: [AshOban]