Packages
verk
0.13.0
1.7.3
1.7.2
1.7.1
1.7.0
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.2
1.0.1
1.0.0
0.14.1
0.14.0
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
Verk is a job processing system backed by Redis.
Current section
Files
Jump to
Current section
Files
lib/verk/sorted_set.ex
defmodule Verk.SortedSet do
@moduledoc """
This module interacts with the jobs on a sorted set
"""
import Verk.Dsl
alias Verk.Job
@doc """
Counts how many jobs are inside the sorted set
"""
@spec count(String.t, GenServer.server) :: {:ok, integer} | {:error, Redix.Error.t}
def count(key, redis) do
Redix.command(redis, ["ZCARD", key])
end
@doc """
Counts how many jobs are inside the sorted set, raising if there's an error
"""
@spec count!(String.t, GenServer.server) :: integer
def count!(key, redis) do
bangify(count(key, redis))
end
@doc """
Clears the sorted set
It will return `{:ok, true}` if the sorted set was cleared and `{:ok, false}` otherwise
An error tuple may be returned if Redis failed
"""
@spec clear(String.t, GenServer.server) :: {:ok, boolean} | {:error, Redix.Error.t}
def clear(key, redis) do
case Redix.command(redis, ["DEL", key]) do
{:ok, 0} -> {:ok, false}
{:ok, 1} -> {:ok, true}
{:error, error} -> {:error, error}
end
end
@doc """
Clears the sorted set, raising if there's an error
It will return `true` if the sorted set was cleared and `false` otherwise
"""
@spec clear!(String.t, GenServer.server) :: boolean
def clear!(key, redis) do
bangify(clear(key, redis))
end
@doc """
Lists jobs from `start` to `stop`
"""
@spec range(String.t, integer, integer, GenServer.server) :: {:ok, [Verk.Job.T]} | {:error, Redix.Error.t}
def range(key, start \\ 0, stop \\ -1, redis) do
case Redix.command(redis, ["ZRANGE", key, start, stop]) do
{:ok, jobs} -> {:ok, (for job <- jobs, do: Job.decode!(job))}
{:error, error} -> {:error, error}
end
end
@doc """
Lists jobs from `start` to `stop`, raising if there's an error
"""
@spec range!(String.t, integer, integer, GenServer.server) :: nil
def range!(key, start \\ 0, stop \\ -1, redis) do
bangify(range(key, start, stop, redis))
end
@doc """
Deletes the job from the sorted set
It returns `{:ok, true}` if the job was found and deleted
Otherwise it returns `{:ok, false}``
An error tuple may be returned if Redis failed
"""
@spec delete_job(String.t, %Job{} | String.t, GenServer.server) :: {:ok, boolean} | {:error, Redix.Error.t}
def delete_job(key, %Job{original_json: original_json}, redis) do
delete_job(key, original_json, redis)
end
def delete_job(key, original_json, redis) do
case Redix.command(redis, ["ZREM", key, original_json]) do
{:ok, 0} -> {:ok, false}
{:ok, 1} -> {:ok, true}
{:error, error} -> {:error, error}
end
end
@doc """
Deletes the job from the sorted set, raising if there's an error
It returns `true` if the job was found and delete
Otherwise it returns `false`
"""
@spec delete_job!(String.t, %Job{} | String.t, GenServer.server) :: boolean
def delete_job!(key, %Job{original_json: original_json}, redis) do
delete_job!(key, original_json, redis)
end
def delete_job!(key, original_json, redis) do
bangify(delete_job(key, original_json, redis))
end
end