Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add apis to support exq_ui #452

Merged
merged 14 commits into from Oct 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
162 changes: 153 additions & 9 deletions lib/exq/api.ex
Expand Up @@ -90,41 +90,53 @@ defmodule Exq.Api do
Expected args:
* `pid` - Exq.Api process
* `queue` - Queue name
* `options`
- size: (integer) size of list
- offset: (integer) start offset of the list
- raw: (boolean) whether to deserialize the job

Returns:
* `{:ok, [jobs]}`

"""
def jobs(pid, queue) do
GenServer.call(pid, {:jobs, queue})
def jobs(pid, queue, options \\ []) do
GenServer.call(pid, {:jobs, queue, options})
end

@doc """
List jobs that will be retried because they previously failed and have not exceeded their retry_count.

Expected args:
* `pid` - Exq.Api process
* `options`
- score: (boolean) whether to include job score
- size: (integer) size of list
- offset: (integer) start offset of the list

Returns:
* `{:ok, [jobs]}`

"""
def retries(pid) do
GenServer.call(pid, :retries)
def retries(pid, options \\ []) do
GenServer.call(pid, {:retries, options})
end

@doc """
List jobs that are enqueued and scheduled to be run at a future time.

Expected args:
* `pid` - Exq.Api process
* `options`
- score: (boolean) whether to include job score
- size: (integer) size of list
- offset: (integer) start offset of the list

Returns:
* `{:ok, [jobs]}`

"""
def scheduled(pid) do
GenServer.call(pid, {:jobs, :scheduled})
def scheduled(pid, options \\ []) do
GenServer.call(pid, {:jobs, :scheduled, options})
end

@doc """
Expand Down Expand Up @@ -157,10 +169,27 @@ defmodule Exq.Api do
* `:ok`

"""
@deprecated "use remove_enqueued_jobs/3"
def remove_job(pid, queue, jid) do
GenServer.call(pid, {:remove_job, queue, jid})
end

@doc """
Removes a job from the queue specified.

Expected args:
* `pid` - Exq.Api process
* `queue` - The name of the queue to remove the job from
* `raw_job` - raw json encoded job value

Returns:
* `:ok`

"""
def remove_enqueued_jobs(pid, queue, raw_jobs) do
GenServer.call(pid, {:remove_enqueued_jobs, queue, raw_jobs})
end

@doc """
A count of the number of jobs in the queue, for each queue.

Expand Down Expand Up @@ -195,19 +224,42 @@ defmodule Exq.Api do

Expected args:
* `pid` - Exq.Api process
* `options`
- score: (boolean) whether to include job score
- size: (integer) size of list
- offset: (integer) start offset of the list

Returns:
* `{:ok, [jobs]}`

"""
def failed(pid) do
GenServer.call(pid, :failed)
def failed(pid, options \\ []) do
GenServer.call(pid, {:failed, options})
end

@deprecated "use find_failed/4"
def find_failed(pid, jid) do
GenServer.call(pid, {:find_failed, jid})
end

@doc """
Find failed job

Expected args:
* `pid` - Exq.Api process
* `score` - Job score
* `jid` - Job jid
* `options`
- raw: (boolean) whether to deserialize the job

Returns:
* `{:ok, job}`

"""
def find_failed(pid, score, jid, options \\ []) do
GenServer.call(pid, {:find_failed, score, jid, options})
end

@doc """
Removes a job in the queue of jobs that have failed and exceeded their retry count.

Expand All @@ -219,10 +271,26 @@ defmodule Exq.Api do
* `:ok`

"""
@deprecated "use remove_failed_jobs/2"
def remove_failed(pid, jid) do
GenServer.call(pid, {:remove_failed, jid})
end

@doc """
Removes jobs from dead queue.

Expected args:
* `pid` - Exq.Api process
* `raw_job` - raw json encoded job value

Returns:
* `:ok`

"""
def remove_failed_jobs(pid, raw_jobs) do
GenServer.call(pid, {:remove_failed_jobs, raw_jobs})
end

def clear_failed(pid) do
GenServer.call(pid, :clear_failed)
end
Expand All @@ -241,10 +309,29 @@ defmodule Exq.Api do
GenServer.call(pid, :failed_size)
end

@deprecated "use find_retry/4"
def find_retry(pid, jid) do
GenServer.call(pid, {:find_retry, jid})
end

@doc """
Find job in retry queue

Expected args:
* `pid` - Exq.Api process
* `score` - Job score
* `jid` - Job jid
* `options`
- raw: (boolean) whether to deserialize the job

Returns:
* `{:ok, job}`

"""
def find_retry(pid, score, jid, options \\ []) do
GenServer.call(pid, {:find_retry, score, jid, options})
end

@doc """
Removes a job in the retry queue from being enqueued again.

Expand All @@ -256,10 +343,26 @@ defmodule Exq.Api do
* `:ok`

"""
@deprecated "use remove_retry_jobs/2"
def remove_retry(pid, jid) do
GenServer.call(pid, {:remove_retry, jid})
end

@doc """
Removes jobs from retry queue.

Expected args:
* `pid` - Exq.Api process
* `raw_job` - raw json encoded job value

Returns:
* `:ok`

"""
def remove_retry_jobs(pid, raw_jobs) do
GenServer.call(pid, {:remove_retry_jobs, raw_jobs})
end

def clear_retries(pid) do
GenServer.call(pid, :clear_retries)
end
Expand All @@ -278,10 +381,29 @@ defmodule Exq.Api do
GenServer.call(pid, :retry_size)
end

@deprecated "use find_scheduled/4"
def find_scheduled(pid, jid) do
GenServer.call(pid, {:find_scheduled, jid})
end

@doc """
Find job in scheduled queue

Expected args:
* `pid` - Exq.Api process
* `score` - Job score
* `jid` - Job jid
* `options`
- raw: (boolean) whether to deserialize the job

Returns:
* `{:ok, job}`

"""
def find_scheduled(pid, score, jid, options \\ []) do
GenServer.call(pid, {:find_scheduled, score, jid, options})
end

@doc """
Removes a job scheduled to run in the future from being enqueued.

Expand All @@ -293,10 +415,26 @@ defmodule Exq.Api do
* `:ok`

"""
@deprecated "use remove_scheduled_jobs/2"
def remove_scheduled(pid, jid) do
GenServer.call(pid, {:remove_scheduled, jid})
end

@doc """
Removes jobs from scheduled queue.

Expected args:
* `pid` - Exq.Api process
* `raw_job` - raw json encoded job value

Returns:
* `:ok`

"""
def remove_scheduled_jobs(pid, raw_jobs) do
GenServer.call(pid, {:remove_scheduled_jobs, raw_jobs})
end

def clear_scheduled(pid) do
GenServer.call(pid, :clear_scheduled)
end
Expand Down Expand Up @@ -333,8 +471,14 @@ defmodule Exq.Api do
GenServer.call(pid, {:stats, key})
end

def stats(pid, key, dates) when is_list(dates) do
GenServer.call(pid, {:stats, key, dates})
end

def stats(pid, key, date) do
GenServer.call(pid, {:stats, key, date})
with {:ok, [count]} <- GenServer.call(pid, {:stats, key, [date]}) do
{:ok, count}
end
end

def realtime_stats(pid) do
Expand Down