Carbonite.Migrations (Carbonite v0.6.0) View Source
Functions to setup Carbonite audit trails in your migrations.
Link to this section Summary
Functions
Inserts an outbox record into the database.
Installs a change capture trigger on a table.
Rollback a migration.
Removes an outbox record.
Removes a change capture trigger from a table.
Inserts a transaction for a data migration.
Defines a Ecto.Migration.after_begin/0 implementation for a data migration.
Allows to update a trigger configuration option for a given table.
Runs one of Carbonite's migrations.
Link to this section Types
Specs
Specs
Specs
outbox_name() :: String.t()
Specs
outbox_option() :: {:carbonite_prefix, prefix()}
Specs
patch() :: non_neg_integer()
Specs
prefix() :: binary()
Specs
Specs
trigger_config_key() :: :table_prefix | :primary_key_columns | :excluded_columns | :mode
Specs
Specs
up_option() :: {:carbonite_prefix, prefix()}
Link to this section Functions
Specs
create_outbox(outbox_name(), [outbox_option()]) :: :ok
Inserts an outbox record into the database.
Options
carbonite_prefixis the schema of the audit trail, defaults to"carbonite_default"
Specs
create_trigger(table_name(), [trigger_option()]) :: :ok
Installs a change capture trigger on a table.
Options
table_prefixis the name of the schema the table lives incarbonite_prefixis the schema of the audit trail, defaults to"carbonite_default"
Specs
down(patch(), [down_option()]) :: :ok
Rollback a migration.
Options
carbonite_prefixdefines the audit trail's schema, defaults to"carbonite_default"drop_schemacontrols whether the initial migration deletes the schema during rollback
Specs
drop_outbox(outbox_name(), [outbox_option()]) :: :ok
Removes an outbox record.
Options
carbonite_prefixis the schema of the audit trail, defaults to"carbonite_default"
Specs
drop_trigger(table_name(), [trigger_option()]) :: :ok
Removes a change capture trigger from a table.
Options
table_prefixis the name of the schema the table lives incarbonite_prefixis the schema of the audit trail, defaults to"carbonite_default"
Specs
insert_migration_transaction(name :: String.t(), [ insert_migration_transaction_option() ]) :: :ok
Inserts a transaction for a data migration.
The transaction's meta attribute is populated with
{"type": "migration", direction: "up"}... and additionally the name from the parameters.
Example
defmodule MyApp.Repo.Migrations.SomeDataMigration do
use Ecto.Migration
import Carbonite.Migrations
def change do
insert_migration_transaction()
execute("UPDATE ...", "...")
end
endThis works the same for up/0/down/0-style migrations:
defmodule MyApp.Repo.Migrations.SomeDataMigration do
use Ecto.Migration
import Carbonite.Migrations
def up do
insert_migration_transaction("some-data-migrated")
execute("INSERT ...")
end
def down do
insert_migration_transaction("some-data-rolled-back")
execute("DELETE ...")
end
endOptions
carbonite_prefixis the schema of the audit trail, defaults to"carbonite_default"metais a map with additional meta information to store on the transaction
insert_migration_transaction_after_begin(opts \\ [])
View Source (since 0.5.0) (macro)Defines a Ecto.Migration.after_begin/0 implementation for a data migration.
See insert_migration_transaction/1 for options.
This determines the name of the transaction from the migration's module name.
{"direction": "up","name": "my_app/repo/migrations/example", "type": "migration"}Example
defmodule MyApp.Repo.Migrations.SomeDataMigration do
use Ecto.Migration
import Carbonite.Migrations
insert_migration_transaction_after_begin()
def change do
execute("UPDATE ...")
end
endAlternatively, if you define your own migration template module:
defmodule MyApp.Migration do
defmacro __using__ do
quote do
use Ecto.Migration
import Carbonite.Migrations
insert_migration_transaction_after_begin()
end
end
end
put_trigger_config(table_name, key, value, opts \\ [])
View Source (since 0.4.0)Specs
put_trigger_config(table_name(), trigger_config_key(), any(), [trigger_option()]) :: :ok
Allows to update a trigger configuration option for a given table.
This function builds an SQL UPDATE statement that can be used within a database migration to
update a setting stored in Carbonite's triggers table without using the Carbonite.Trigger
schema or other application-level code that is prone to change over time. This helps to ensure
that your data migrations continue to function, regardless of future updates to Carbonite.
Configuration values
primary_key_columnsis a list of columns that form the primary key of the table(defaults to `["id"]`, set to `[]` to disable)excluded_columnsis a list of columns to exclude from change capturesfiltered_columnsis a list of columns that appear as '[FILTERED]' in the datastore_changed_fromis a boolean defining whether thechanged_fromfield should be filledmodeis either:captureor:ignoreand defines the default behaviour of the trigger
Example
Carbonite.Migrations.put_trigger_config("rabbits", :excluded_columns, ["name"])Options
table_prefixis the name of the schema the table lives incarbonite_prefixis the schema of the audit trail, defaults to"carbonite_default"
Specs
Runs one of Carbonite's migrations.
Migration patchlevels
Make sure that you run all migrations in your host application.
- Initial patch: 1
- Current patch: 5
Options
carbonite_prefixdefines the audit trail's schema, defaults to"carbonite_default"