use Vtc.Ecto.Postgres.Utils defpgmodule Vtc.Ecto.Postgres.Migrations do @moduledoc """ Top-level migrations for creating all Vtc ecto types. """ alias Vtc.Ecto.Postgres.PgFramerate alias Vtc.Ecto.Postgres.PgFramestamp alias Vtc.Ecto.Postgres.PgRational @doc """ Runs all migrations. Safe to run multiple times when updates are required. Migrations are run for: - [PgRational](`Vtc.Ecto.Postgres.PgRational.Migrations`) - [PgFramerate](`Vtc.Ecto.Postgres.PgFramerate.Migrations`) - [PgFramestamp](`Vtc.Ecto.Postgres.PgFramestamp.Migrations`) - [PgFramestamp.Range](`Vtc.Ecto.Postgres.PgFramestamp.Range.Migrations`) > #### Required Permissions {: .warning} > > To add the `framestamp_range` > [canonical](https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-DISCRETE), > function, we must directly add it to the `framestamp_range` type in the `pg_catalog` > table. In most databases, this will require elevated permissions. See the > `PgFramestamp.Range.Migrations.inject_canonical_function/0` for more information on > why this is required. > > You can choose to skip this step if you wish my setting the `inject_canonical?` > op to false, but operations that require discreet nudging of in and out points will > not return correct results, and ranges with different upper/lowwer bound types will > not be comparable. """ @spec migrate(Keyword.t()) :: :ok def migrate(opts \\ []) do PgRational.Migrations.create_all() PgFramerate.Migrations.create_all() PgFramestamp.Migrations.create_all() PgFramestamp.Range.Migrations.create_all(opts) :ok end end