View Source TelemetryUI.Backend.EctoPostgres.Migrations (telemetry_ui v3.0.8)
Migrations create and modify the database tables TelemetryUI needs to function.
usage
Usage
To use migrations in your application you'll need to generate an Ecto.Migration
that wraps
calls to TelemetryUI.Backend.EctoPostgres.Migrations
:
mix ecto.gen.migration add_telemetry_ui
Open the generated migration in your editor and call the up
and down
functions on
TelemetryUI.Backend.EctoPostgres.Migrations
:
defmodule MyApp.Repo.Migrations.AddTelemetryUI do
use Ecto.Migration
def up, do: TelemetryUI.Backend.EctoPostgres.Migrations.up()
def down, do: TelemetryUI.Backend.EctoPostgres.Migrations.down()
end
This will run all of TelemetryUI's versioned migrations for your database.
Now, run the migration to create the table:
mix ecto.migrate
Migrations between versions are idempotent. As new versions are released, you may need to run additional migrations. To do this, generate a new migration:
mix ecto.gen.migration upgrade_telemetry_ui_to_v11
Open the generated migration in your editor and call the up
and down
functions on TelemetryUI.Backend.EctoPostgres.Migrations
, passing a version number:
defmodule MyApp.Repo.Migrations.UpgradeTelemetryUIToV11 do
use Ecto.Migration
def up, do: TelemetryUI.Backend.EctoPostgres.Migrations.up(version: 11)
def down, do: TelemetryUI.Backend.EctoPostgres.Migrations.down(version: 11)
end
isolation-with-prefixes
Isolation with Prefixes
TelemetryUI supports namespacing through PostgreSQL schemas, also called "prefixes" in Ecto. With prefixes your events table can reside outside of your primary schema (usually public) and you can have multiple separate job tables.
To use a prefix you first have to specify it within your migration:
defmodule MyApp.Repo.Migrations.AddPrefixedTelemetryUIJobsTable do
use Ecto.Migration
def up, do: TelemetryUI.Backend.EctoPostgres.Migrations.up(prefix: "private")
def down, do: TelemetryUI.Backend.EctoPostgres.Migrations.down(prefix: "private")
end
The migration will create the "private" schema and all tables, functions and triggers within that schema. With the database migrated you'll then specify the prefix in your configuration:
config :my_app, TelemetryUI,
prefix: "private",
...
In some cases, for example if your "private" schema already exists and your database user in production doesn't have permissions to create a new schema, trying to create the schema from the migration will result in an error. In such situations, it may be useful to inhibit the creation of the "private" schema:
defmodule MyApp.Repo.Migrations.AddPrefixedTelemetryUIJobsTable do
use Ecto.Migration
def up, do: TelemetryUI.Backend.EctoPostgres.Migrations.up(prefix: "private", create_schema: false)
def down, do: TelemetryUI.Backend.EctoPostgres.Migrations.down(prefix: "private")
end
Link to this section Summary
Functions
Run the down
changes for all migrations between the current version and the initial version.
Run the up
changes for all migrations between the initial version and the current version.
Link to this section Functions
Run the down
changes for all migrations between the current version and the initial version.
example
Example
Run all migrations from current version down to the first:
TelemetryUI.Backend.EctoPostgres.Migrations.down()
Run migrations down to and including a specified version:
TelemetryUI.Backend.EctoPostgres.Migrations.down(version: 5)
Run migrations in an alternate prefix:
TelemetryUI.Backend.EctoPostgres.Migrations.down(prefix: "payments")
Run the up
changes for all migrations between the initial version and the current version.
example
Example
Run all migrations up to the current version:
TelemetryUI.Backend.EctoPostgres.Migrations.up()
Run migrations up to a specified version:
TelemetryUI.Backend.EctoPostgres.Migrations.up(version: 2)
Run migrations in an alternate prefix:
TelemetryUI.Backend.EctoPostgres.Migrations.up(prefix: "payments")
Run migrations in an alternate prefix but don't try to create the schema:
TelemetryUI.Backend.EctoPostgres.Migrations.up(prefix: "payments", create_schema: false)