clickhouse-migrate-0.1.0.0: src/ClickHouseMigrate/Internal/EventTypes.hs
-- | Observational callback configuration. No SQL execution capability is passed.
module ClickHouseMigrate.Internal.EventTypes where
import ClickHouseMigrate.Ledger (LedgerPosition)
import ClickHouseMigrate.Prelude
import ClickHouseMigrate.Report (StepReference)
import ClickHouseMigrate.Target (QueryId)
data EventPhase
= RunBeginning
| RunCompleted
| BeforeMigrationStart
| MigrationStarted
| BeforeStepStart
| StepStarted
| BeforeSql
| SqlObserved
| BeforeStepSuccess
| StepSucceeded
| BeforeMigrationComplete
| MigrationCompleted
| RecoveryAuthorized
| StepAccepted
| BeforeAdoptionStart
| AdoptionStarted
| BeforeAdoptionEntry
| AdoptionEntryRecorded
| BeforeAdoptionComplete
| AdoptionCompleted
deriving stock (Eq, Ord, Show)
data RunEvent = RunEvent
{ phase :: !EventPhase,
runId :: !Text,
component :: !(Maybe Text),
migration :: !(Maybe Text),
step :: !(Maybe Text),
queryId :: !(Maybe QueryId),
position :: !(Maybe LedgerPosition)
}
deriving stock (Eq, Show)
type EventSink = RunEvent -> IO ()
-- Intentionally no Show instance: SQL enters only an explicitly configured sink.
data SqlDiagnostic = SqlDiagnostic !StepReference !QueryId !ByteString
data DiagnosticPolicy = DiagnosticPolicy !(Maybe (SqlDiagnostic -> IO ()))