Bandera.Ecto.Migrations (bandera v0.3.0)

Copy Markdown View Source

Helpers for creating the Bandera flags table. Call from your own migration:

defmodule MyApp.Repo.Migrations.CreateBanderaFlags do
  use Ecto.Migration
  def up, do: Bandera.Ecto.Migrations.up()
  def down, do: Bandera.Ecto.Migrations.down()
end

The table name is read at runtime from config :bandera, persistence: [ecto_table_name: ...] (default "bandera_flags"), so it is never fixed at compile time.

Summary

Functions

Drops the flags table. Call from the down/0 of your own migration.

Creates the flags table and its unique index (idempotently).

Add the schema-v2 value column to an existing flags table.

Functions

down()

@spec down() :: :ok

Drops the flags table. Call from the down/0 of your own migration.

up()

@spec up() :: :ok

Creates the flags table and its unique index (idempotently).

Call from the up/0 of your own migration. The table name is read at runtime from Bandera.Config.ecto_table_name/0.

upgrade_v2()

@spec upgrade_v2() :: :ok

Add the schema-v2 value column to an existing flags table.

Call once from the up/0 of a versioned migration in an existing install:

defmodule MyApp.Repo.Migrations.UpgradeBanderaV2 do
  use Ecto.Migration
  def up, do: Bandera.Ecto.Migrations.upgrade_v2()
end

Uses a plain add/2 (not add_if_not_exists/2) so it works on adapters such as SQLite3 that reject conditional column additions; migration versioning ensures it runs only once.