PhoenixKit.Install.ObanConfig (phoenix_kit v1.7.71)

Copy Markdown View Source

Handles Oban configuration for PhoenixKit installation.

This module provides functionality to:

  • Configure Oban for background job processing
  • Set up required queues (default, emails, file_processing)
  • Add Oban.Plugins.Pruner for job cleanup
  • Add Oban to application supervisor tree
  • Ensure configuration exists during updates

Summary

Functions

Adds or verifies Oban configuration.

Adds Oban to the parent application's supervision tree.

Checks if Oban configuration exists in config.exs.

Checks if Oban supervisor is configured in application.ex.

Functions

add_oban_configuration(igniter)

Adds or verifies Oban configuration.

This function ensures that Oban is properly configured for PhoenixKit's background job processing, including:

  1. Repo configuration (auto-detected from PhoenixKit config)
  2. Required queues for file processing and email handling
  3. Pruner plugin for automatic job cleanup

Parameters

  • igniter - The igniter context

Returns

Updated igniter with Oban configuration and notices.

add_oban_supervisor(igniter)

Adds Oban to the parent application's supervision tree.

This function ensures that Oban starts automatically when the application starts, with correct positioning in the supervisor tree:

  • AFTER PhoenixKit.Supervisor (PhoenixKit services available)
  • BEFORE Endpoint (Oban ready before HTTP requests)

Important

Oban MUST start AFTER PhoenixKit.Supervisor because PhoenixKit.Supervisor depends on Repo, and Oban also depends on Repo. The correct order is:

  1. Repo (database connection)
  2. PhoenixKit.Supervisor (uses Repo for Settings)
  3. Oban (uses Repo for job persistence)

Parameters

  • igniter - The igniter context

Returns

Updated igniter with Oban added to application supervisor.

oban_config_exists?(igniter)

Checks if Oban configuration exists in config.exs.

Parameters

  • igniter - The igniter context for detecting parent app name

Returns

Boolean indicating if configuration exists.

oban_supervisor_exists?(igniter)

Checks if Oban supervisor is configured in application.ex.

Parameters

  • igniter - The igniter context for detecting parent app name

Returns

Boolean indicating if Oban supervisor exists in application.ex.