Packages

A cron like system built in Elixir, that you can mount in your supervision tree

Current section

Files

Jump to
cronex lib cronex every.ex
Raw

lib/cronex/every.ex

defmodule Cronex.Every do
@moduledoc """
This module defines scheduling macros.
"""
@doc"""
`Cronex.Every.every` macro is used as a simple interface to add a job to the `Cronex.Table`.
## Example
every :month, do
# Monthly task here
end
every :day, at: "10:00", do
# Daily task at 10:00 here
end
"""
defmacro every(frequency, do: block) do
quote do
def unquote(:"job_every_#{frequency}")() do
Cronex.Job.new(unquote(frequency), fn -> unquote(block) end)
end
end
end
defmacro every(frequency, at: time, do: block) do
quote do
def unquote(:"job_every_#{frequency}_at_#{time}")() do
Cronex.Job.new(unquote(frequency), unquote(time), fn -> unquote(block) end)
end
end
end
end