packages feed

kiroku-store-migrations-0.7.2.0: src/Kiroku/Store/Migrations.hs

module Kiroku.Store.Migrations
  ( DefinitionError,
    MigrationComponent,
    MigrationPlan,
    PlanError,
    kirokuMigrationPlan,
    kirokuMigrations,
  )
where

import Data.List.NonEmpty (NonEmpty (..))
import Database.PostgreSQL.Migrate
  ( DefinitionError,
    MigrationComponent,
    MigrationPlan,
    PlanError,
    migrationPlan,
  )
import Kiroku.Store.Migrations.Internal.Definition (kirokuMigrations)

-- | The complete single-component Kiroku migration plan.
--
-- The embedded manifest is validated at compile time, so a component-definition
-- failure indicates a broken package invariant rather than an operator error.
kirokuMigrationPlan :: Either PlanError MigrationPlan
kirokuMigrationPlan =
  case kirokuMigrations of
    Left definitionError ->
      error ("invalid embedded Kiroku migration component: " <> show definitionError)
    Right component -> migrationPlan (component :| [])