Packages

phoenix_kit

1.7.206
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib phoenix_kit migrations postgres v27.ex
Raw

lib/phoenix_kit/migrations/postgres/v27.ex

defmodule PhoenixKit.Migrations.Postgres.V27 do
@moduledoc """
Migration V27: Add Oban tables for background job processing.
This migration creates Oban tables required for background job processing,
including file processing (storage system) and email handling.
## Changes
- Creates `oban_jobs` table for job queue management
- Creates `oban_peers` table for distributed coordination
- Adds indexes for efficient job processing
- Sets up Oban schema to latest version (uses Oban.Migration.up/1)
## Requirements
- PostgreSQL database
- Oban dependency (`{:oban, "~> 2.17"}`)
## Purpose
- Enable background job processing for:
- File variant generation (thumbnails, resizes)
- Video processing (transcoding, thumbnails)
- Email sending and tracking
- Metadata extraction (dimensions, duration, EXIF)
- Multi-bucket redundancy uploads
## Queue Configuration
After running this migration, configure Oban queues in config/config.exs:
config :my_app, Oban, # your host app's name, not :phoenix_kit
repo: MyApp.Repo,
queues: [
default: 10,
emails: 50,
file_processing: 20
],
plugins: [Oban.Plugins.Pruner]
## Notes
- Oban tables are created in the same schema prefix as PhoenixKit tables
- Uses Oban's latest schema version automatically (forward-compatible)
- Idempotent: Safe to run multiple times
"""
use Ecto.Migration
def up(%{prefix: prefix} = _opts) do
# Run Oban migrations to create required tables
# Uses latest Oban schema version automatically (forward-compatible)
#
# create_schema: false is load-bearing: without it Oban's migrator
# defaults the flag to true for any non-public prefix and executes
# CREATE SCHEMA IF NOT EXISTS — which fails for low-privilege roles
# even when the schema exists (Postgres checks the CREATE privilege
# before the IF-NOT-EXISTS short-circuit). By V27 the schema always
# exists (V01 owns schema creation), so never ask Oban to create it.
Oban.Migration.up(prefix: prefix, create_schema: false)
# Set version comment on phoenix_kit table for version tracking
execute "COMMENT ON TABLE #{prefix_table_name("phoenix_kit", prefix)} IS '27'"
end
def down(%{prefix: prefix} = _opts) do
# Remove Oban tables by downgrading to version 1 (minimum required version)
Oban.Migration.down(prefix: prefix, version: 1)
# Update version comment on phoenix_kit table to previous version
execute "COMMENT ON TABLE #{prefix_table_name("phoenix_kit", prefix)} IS '26'"
end
# Helper functions
defp prefix_table_name(table_name, nil), do: table_name
defp prefix_table_name(table_name, prefix), do: "#{prefix}.#{table_name}"
end