Packages
oban
2.22.1
2.23.0
2.22.1
2.22.0
2.21.1
2.21.0
2.20.3
2.20.2
2.20.1
2.20.0
2.19.4
2.19.3
2.19.2
2.19.1
2.19.0
2.18.3
2.18.2
2.18.1
2.18.0
2.17.12
2.17.11
2.17.10
2.17.9
2.17.8
2.17.7
2.17.6
2.17.5
2.17.4
2.17.3
2.17.2
2.17.1
2.17.0
2.16.3
2.16.2
2.16.1
2.16.0
2.15.4
2.15.3
2.15.2
2.15.1
2.15.0
2.14.2
2.14.1
2.14.0
2.13.6
2.13.5
2.13.4
2.13.3
2.13.2
2.13.1
2.13.0
2.12.1
2.12.0
2.11.3
2.11.2
2.11.1
2.11.0
2.10.1
2.10.0
retired
2.9.2
2.9.1
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.1
2.6.0
2.5.0
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.0
2.1.0
2.0.0
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
1.2.0
1.1.0
1.0.0
1.0.0-rc.2
1.0.0-rc.1
0.12.1
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Robust job processing, backed by modern PostgreSQL, SQLite3, and MySQL.
Current section
Files
Jump to
Current section
Files
lib/oban/migrations/sqlite.ex
defmodule Oban.Migrations.SQLite do
@moduledoc false
@behaviour Oban.Migration
use Ecto.Migration
def current_version, do: 1
@impl Oban.Migration
def up(_opts) do
create_if_not_exists table(:oban_jobs, primary_key: false) do
add :id, :bigserial, primary_key: true
add :state, :text, null: false, default: "available"
add :queue, :text, null: false, default: "default"
add :worker, :text, null: false
add :args, :json, null: false, default: %{}
add :meta, :json, null: false, default: %{}
add :tags, :json, null: false, default: []
add :errors, :json, null: false, default: []
add :attempt, :integer, null: false, default: 0
add :max_attempts, :integer, null: false, default: 20
add :priority, :integer, null: false, default: 0
add :inserted_at, :utc_datetime_usec,
null: false,
default: fragment("(strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))")
add :scheduled_at, :utc_datetime_usec,
null: false,
default: fragment("(strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))")
add :attempted_at, :utc_datetime_usec
add :attempted_by, :json, null: false, default: []
add :cancelled_at, :utc_datetime_usec
add :completed_at, :utc_datetime_usec
add :discarded_at, :utc_datetime_usec
end
create_if_not_exists index(:oban_jobs, [:state, :queue, :priority, :scheduled_at, :id])
:ok
end
@impl Oban.Migration
def down(_opts) do
drop_if_exists table(:oban_jobs)
:ok
end
@impl Oban.Migration
def migrated_version(opts) do
repo = Keyword.get_lazy(opts, :repo, fn -> repo() end)
query = """
SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'oban_jobs'
"""
case repo.query(query, [], log: false) do
{:ok, %{rows: [[1]]}} -> 1
_ -> 0
end
end
end