packages feed

pg-migrate-1.0.0.0: src/Database/PostgreSQL/Migrate/Internal.hs

{-# OPTIONS_HADDOCK hide #-}

module Database.PostgreSQL.Migrate.Internal
  ( MigrationKind (..),
    TransactionMode (..),
    MigrationDescription (..),
    ComponentDescription (..),
    PlanDescription (..),
    planDescription,
    componentNameText,
    migrationNameText,
    migrationIdComponent,
    migrationIdName,
    migrationChecksumBytes,
    migrationTransactionMode,
    migrationKind,
    migrationSqlBytes,
    PostgresIdentifier (..),
    postgresIdentifier,
    LedgerMetadata (..),
    LedgerSnapshot (..),
    LedgerError (..),
    currentLedgerVersion,
    ledgerMigrationVersions,
    ledgerUpgradePath,
    initializeOrUpgradeLedger,
    quotePostgresIdentifier,
    ledgerVersionOneDdl,
    LedgerConfig (..),
    ledgerSchemaText,
    comparePlanWithLedger,
    loadLedger,
    statusFromSnapshot,
    statusFromSnapshotWith,
    verifyFromSnapshot,
    loadStatus,
    loadVerification,
    runLedgerConfig,
    runLockWait,
    runStatementTimeout,
    runUnknownMigrationsPolicy,
    runEventHandler,
    useConnectionProvider,
    checkServerVersion,
    classifyServerVersion,
    acquireAdvisoryLock,
    releaseAdvisoryLock,
    applyStatementTimeout,
    restoreStatementTimeout,
    readStatementTimeout,
    ResolvedHistoryMapping (..),
    resolveHistoryImport,
    stateVerifiedEvidence,
  )
where

import Database.PostgreSQL.Migrate.History.Validation
  ( ResolvedHistoryMapping (..),
    resolveHistoryImport,
    stateVerifiedEvidence,
  )
import Database.PostgreSQL.Migrate.Ledger
  ( comparePlanWithLedger,
    loadLedger,
    loadStatus,
    loadVerification,
    statusFromSnapshot,
    statusFromSnapshotWith,
    verifyFromSnapshot,
  )
import Database.PostgreSQL.Migrate.Ledger.Migrations
  ( currentLedgerVersion,
    initializeOrUpgradeLedger,
    ledgerMigrationVersions,
    ledgerUpgradePath,
  )
import Database.PostgreSQL.Migrate.Ledger.Sql
  ( ledgerVersionOneDdl,
    quotePostgresIdentifier,
  )
import Database.PostgreSQL.Migrate.Ledger.Types
  ( LedgerConfig (..),
    LedgerError (..),
    LedgerMetadata (..),
    LedgerSnapshot (..),
    PostgresIdentifier (..),
    ledgerSchemaText,
    postgresIdentifier,
  )
import Database.PostgreSQL.Migrate.Plan
  ( ComponentDescription (..),
    MigrationDescription (..),
    PlanDescription (..),
    planDescription,
  )
import Database.PostgreSQL.Migrate.Runner.Connection
  ( checkServerVersion,
    classifyServerVersion,
  )
import Database.PostgreSQL.Migrate.Runner.Lock
  ( acquireAdvisoryLock,
    applyStatementTimeout,
    readStatementTimeout,
    releaseAdvisoryLock,
    restoreStatementTimeout,
  )
import Database.PostgreSQL.Migrate.Runner.Types
  ( ConnectionProvider (..),
    runEventHandler,
    runLedgerConfig,
    runLockWait,
    runStatementTimeout,
    runUnknownMigrationsPolicy,
  )
import Database.PostgreSQL.Migrate.Types
  ( Migration,
    MigrationAction (..),
    MigrationChecksum (..),
    MigrationKind (..),
    TransactionMode (..),
    componentNameText,
    migrationActionOf,
    migrationIdComponent,
    migrationIdName,
    migrationKindOf,
    migrationModeOf,
    migrationNameText,
  )
import Hasql.Connection qualified as Connection
import Hasql.Errors qualified as Errors
import PgMigrate.Prelude

migrationChecksumBytes :: MigrationChecksum -> ByteString
migrationChecksumBytes (MigrationChecksum bytes) = bytes

migrationTransactionMode :: Migration -> TransactionMode
migrationTransactionMode = migrationModeOf

migrationKind :: Migration -> MigrationKind
migrationKind = migrationKindOf

migrationSqlBytes :: Migration -> Maybe ByteString
migrationSqlBytes migration =
  case migrationActionOf migration of
    SqlAction bytes -> Just bytes
    TransactionAction _ -> Nothing
    SessionAction _ -> Nothing

useConnectionProvider ::
  ConnectionProvider ->
  (Connection.Connection -> IO value) ->
  IO (Either Errors.ConnectionError value)
useConnectionProvider ConnectionProvider {useDedicatedConnection} = useDedicatedConnection