View Source DSL: AshOban

Tools for working with AshOban triggers.

oban

Nested DSLs

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

Name Type Default Docs
api * module The Api module to use when calling actions on this resource

oban.triggers

Nested DSLs

Examples

triggers do
  trigger :process do
    action :process
    where expr(processed != true)
    worker_read_action(:read)
  end
end

oban.triggers.trigger

trigger name

Examples

trigger :process do
  action :process
  where expr(processed != true)
  worker_read_action(:read)
end

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
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.

Introspection

Target: AshOban.Trigger

oban.scheduled_actions

A section for configured scheduled actions. Supports generic and create actions.

Nested DSLs

Examples

scheduled_actions do
  schedule :import, "0 */6 * * *", action: :import
end

oban.scheduled_actions.schedule

schedule name, cron

Options

Name Type Default Docs
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