keiro-dsl-0.18.0.0: test/conformance-calendar-days/Conformance/CalendarDays/Historical.hs
module Conformance.CalendarDays.Historical
( historicalLocalDayCodec,
historicalMaybeLocalDayCodec,
)
where
import Conformance.CalendarDays.Domain (LocalDay (..), MaybeLocalDay (..))
import Data.Aeson (parseJSON, toJSON)
import Data.Aeson.Types (parseEither)
import Data.Text qualified as T
import Keiro.Dsl.CodecCompare (HistoricalCodec (..))
-- These repository fixtures model the consumer's pre-adoption Aeson-derived
-- codecs. They are migration evidence, never a runtime fallback.
historicalLocalDayCodec :: HistoricalCodec LocalDay
historicalLocalDayCodec =
HistoricalCodec
{ identity = "conformance.calendar-days.LocalDay.aeson-day",
version = "aeson-2.2",
encode = \(LocalDay value) -> toJSON value,
decode = either (Left . T.pack) (Right . LocalDay) . parseEither parseJSON
}
historicalMaybeLocalDayCodec :: HistoricalCodec MaybeLocalDay
historicalMaybeLocalDayCodec =
HistoricalCodec
{ identity = "conformance.calendar-days.MaybeLocalDay.aeson-day",
version = "aeson-2.2",
encode = \(MaybeLocalDay value) -> toJSON value,
decode = either (Left . T.pack) (Right . MaybeLocalDay) . parseEither parseJSON
}