diff --git a/lib/towerops/snmp/neighbor_cleanup_worker.ex b/lib/towerops/snmp/neighbor_cleanup_worker.ex index c731014f..7ddfa487 100644 --- a/lib/towerops/snmp/neighbor_cleanup_worker.ex +++ b/lib/towerops/snmp/neighbor_cleanup_worker.ex @@ -19,6 +19,7 @@ defmodule Towerops.Snmp.NeighborCleanupWorker do @stale_threshold_hours 24 @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok def perform(%Oban.Job{}) do cleanup_stale_records() :ok diff --git a/lib/towerops/workers/backup_summary_worker.ex b/lib/towerops/workers/backup_summary_worker.ex index 359d1df3..576a7850 100644 --- a/lib/towerops/workers/backup_summary_worker.ex +++ b/lib/towerops/workers/backup_summary_worker.ex @@ -13,6 +13,7 @@ defmodule Towerops.Workers.BackupSummaryWorker do require Logger @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok def perform(%Oban.Job{}) do yesterday = DateTime.add(DateTime.utc_now(), -24 * 60 * 60, :second) diff --git a/lib/towerops/workers/backup_timeout_worker.ex b/lib/towerops/workers/backup_timeout_worker.ex index 7b2f70bd..936dec84 100644 --- a/lib/towerops/workers/backup_timeout_worker.ex +++ b/lib/towerops/workers/backup_timeout_worker.ex @@ -16,6 +16,7 @@ defmodule Towerops.Workers.BackupTimeoutWorker do @timeout_minutes 5 @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok def perform(%Oban.Job{}) do cutoff = DateTime.add(DateTime.utc_now(), -@timeout_minutes * 60, :second) timeout_count = BackupRequests.mark_timed_out_requests(cutoff) diff --git a/lib/towerops/workers/device_monitor_worker.ex b/lib/towerops/workers/device_monitor_worker.ex index 68371b99..89abb086 100644 --- a/lib/towerops/workers/device_monitor_worker.ex +++ b/lib/towerops/workers/device_monitor_worker.ex @@ -28,6 +28,7 @@ defmodule Towerops.Workers.DeviceMonitorWorker do @monitor_interval 30 @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok def perform(%Oban.Job{args: %{"device_id" => device_id}}) do case Devices.get_device(device_id) do nil -> diff --git a/lib/towerops/workers/device_poller_worker.ex b/lib/towerops/workers/device_poller_worker.ex index 13693eb7..84c502f9 100644 --- a/lib/towerops/workers/device_poller_worker.ex +++ b/lib/towerops/workers/device_poller_worker.ex @@ -34,6 +34,7 @@ defmodule Towerops.Workers.DevicePollerWorker do @default_poll_interval 60 @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok def perform(%Oban.Job{args: %{"device_id" => device_id}}) do case Devices.get_device(device_id) do nil -> diff --git a/lib/towerops/workers/discovery_worker.ex b/lib/towerops/workers/discovery_worker.ex index 2956b300..a6c88412 100644 --- a/lib/towerops/workers/discovery_worker.ex +++ b/lib/towerops/workers/discovery_worker.ex @@ -38,6 +38,7 @@ defmodule Towerops.Workers.DiscoveryWorker do @agent_online_threshold_minutes 10 @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok | :discard def perform(%Oban.Job{args: %{"device_id" => device_id}}) do case Devices.get_device_with_details(device_id) do nil -> diff --git a/lib/towerops/workers/firmware_version_fetcher_worker.ex b/lib/towerops/workers/firmware_version_fetcher_worker.ex index b54cc084..c47fe325 100644 --- a/lib/towerops/workers/firmware_version_fetcher_worker.ex +++ b/lib/towerops/workers/firmware_version_fetcher_worker.ex @@ -17,6 +17,7 @@ defmodule Towerops.Workers.FirmwareVersionFetcherWorker do @changelog_url "https://mikrotik.com/download/changelogs" @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok | {:error, term()} def perform(%Oban.Job{}) do Logger.info("Fetching MikroTik RouterOS firmware version from RSS feed") diff --git a/lib/towerops/workers/job_health_check_worker.ex b/lib/towerops/workers/job_health_check_worker.ex index 6249d4b4..ca5a988c 100644 --- a/lib/towerops/workers/job_health_check_worker.ex +++ b/lib/towerops/workers/job_health_check_worker.ex @@ -23,6 +23,7 @@ defmodule Towerops.Workers.JobHealthCheckWorker do require Logger @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok def perform(%Oban.Job{}) do monitor_recoveries = recover_missing_monitor_jobs() poller_recoveries = recover_missing_poller_jobs() diff --git a/lib/towerops/workers/login_history_cleanup_worker.ex b/lib/towerops/workers/login_history_cleanup_worker.ex index f607acbb..e2135f04 100644 --- a/lib/towerops/workers/login_history_cleanup_worker.ex +++ b/lib/towerops/workers/login_history_cleanup_worker.ex @@ -16,6 +16,7 @@ defmodule Towerops.Workers.LoginHistoryCleanupWorker do alias Towerops.Repo @impl Oban.Worker + @spec perform(Oban.Job.t()) :: {:ok, %{deleted: non_neg_integer(), anonymized_deleted: non_neg_integer()}} def perform(_job) do # Delete login attempts older than retention period (365 days) retention_days = Application.get_env(:towerops, :login_history_retention_days, 365) diff --git a/lib/towerops/workers/mikrotik_backup_worker.ex b/lib/towerops/workers/mikrotik_backup_worker.ex index a91dcf1d..fa8f43cd 100644 --- a/lib/towerops/workers/mikrotik_backup_worker.ex +++ b/lib/towerops/workers/mikrotik_backup_worker.ex @@ -23,6 +23,7 @@ defmodule Towerops.Workers.MikrotikBackupWorker do require Logger @impl Oban.Worker + @spec perform(Oban.Job.t()) :: :ok | {:error, String.t()} def perform(%Oban.Job{}) do Logger.info("Starting MikroTik configuration backup job") diff --git a/lib/towerops/workers/session_cleanup_worker.ex b/lib/towerops/workers/session_cleanup_worker.ex index f6f6a397..695a724a 100644 --- a/lib/towerops/workers/session_cleanup_worker.ex +++ b/lib/towerops/workers/session_cleanup_worker.ex @@ -10,6 +10,7 @@ defmodule Towerops.Workers.SessionCleanupWorker do alias Towerops.Accounts @impl Oban.Worker + @spec perform(Oban.Job.t()) :: {:ok, %{sessions_deleted: non_neg_integer()}} def perform(_job) do count = Accounts.delete_expired_browser_sessions() {:ok, %{sessions_deleted: count}}