packages feed

keiro-0.12.0.0: test/Compatibility/ReadModel011.hs

{-# OPTIONS_GHC -Wno-deprecations #-}

-- | Compile-only coverage for the Keiro 0.11 read-model surface. This module
-- deliberately uses every misleading legacy spelling so the 0.12 migration
-- window cannot accidentally become a source break.
module Compatibility.ReadModel011
  ( legacyDirectRecord,
    legacyPositionalRecord,
    legacyPattern,
    legacyModes,
    legacyDefaultOptions,
    legacyRunQueryWith,
  )
where

import Data.Text (Text)
import Effectful (Eff, IOE, (:>))
import Keiro.ReadModel
  ( ConsistencyMode (..),
    PositionWaitOptions (..),
    ReadModel (..),
    ReadModelError,
    StrongScope (..),
    defaultStrongWaitOptions,
    runQueryWith,
  )
import Keiro.Telemetry (KeiroMetrics)
import Kiroku.Store.Effect (Store)

legacyDirectRecord :: ReadModel () ()
legacyDirectRecord =
  ReadModel
    { name = "compatibility-legacy-record",
      tableName = "legacy_record",
      schema = "public",
      subscriptionName = "legacy-subscription",
      version = 1,
      shapeHash = "legacy-v1",
      defaultConsistency = Eventual,
      strongScope = EntireLog,
      query = \() -> pure ()
    }

legacyPositionalRecord :: ReadModel () ()
legacyPositionalRecord =
  ReadModel
    "compatibility-legacy-positional"
    "legacy_positional"
    "public"
    "legacy-subscription"
    1
    "legacy-v1"
    Strong
    (CategoryHead "legacy")
    (\() -> pure ())

legacyPattern :: ReadModel q r -> (Text, Text, Text, Text, Int, Text, ConsistencyMode, StrongScope)
legacyPattern (ReadModel modelName table schemaName subscription modelVersion shape consistency scope _) =
  (modelName, table, schemaName, subscription, modelVersion, shape, consistency, scope)

legacyModes :: [ConsistencyMode]
legacyModes =
  [ Eventual,
    Strong,
    PositionWait
      PositionWaitOptions
        { target = Nothing,
          timeoutMicros = 5000000,
          pollMicros = 10000
        }
  ]

legacyDefaultOptions :: PositionWaitOptions
legacyDefaultOptions = defaultStrongWaitOptions

legacyRunQueryWith ::
  (IOE :> es, Store :> es) =>
  Maybe KeiroMetrics ->
  ConsistencyMode ->
  ReadModel q r ->
  q ->
  Eff es (Either ReadModelError r)
legacyRunQueryWith = runQueryWith