packages feed

keiro-dsl-0.18.0.0: test/conformance-calendar-days/Generated/CalendarDays/CalendarStore/Domain.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from aggregate CalendarStore; do not edit.
module Generated.CalendarDays.CalendarStore.Domain where

import Data.Aeson (FromJSON, ToJSON)
import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Keiki.Shape (CanonicalStateShape, CanonicalTypeName)
import Conformance.CalendarDays.Bindings qualified as Bindings
import Conformance.CalendarDays.Domain (CalendarEnvelope, LocalDay, MaybeLocalDay)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)

data CalendarStoreVertex = CalendarStoreEmpty | CalendarStoreStored
  deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
  deriving anyclass (ToJSON, FromJSON)
instance CanonicalStateShape CalendarStoreVertex
instance CanonicalTypeName CalendarStoreVertex

data StoreDateData = StoreDateData
  { day :: !LocalDay
  , optionalDay :: !MaybeLocalDay
  , envelope :: !CalendarEnvelope
  }
  deriving stock (Generic, Eq, Show)

data CalendarStoreCommand = StoreDate !StoreDateData
  deriving stock (Generic, Eq, Show)

data DateStoredData = DateStoredData
  { day :: !LocalDay
  , optionalDay :: !MaybeLocalDay
  , envelope :: !CalendarEnvelope
  }
  deriving stock (Generic, Eq, Show)

data DateAuditedData = DateAuditedData
  { day :: !LocalDay
  , optionalDay :: !MaybeLocalDay
  , envelope :: !CalendarEnvelope
  }
  deriving stock (Generic, Eq, Show)

data CalendarStoreEvent = DateStored !DateStoredData
  | DateAudited !DateAuditedData
  deriving stock (Generic, Eq, Show)

type CalendarStoreRegs =
  '[ '("current", LocalDay)
   ]

initialCalendarStoreRegs :: RegFile CalendarStoreRegs
initialCalendarStoreRegs =
  RCons (Proxy @"current") Bindings.initialLocalDay RNil

$(deriveAggregateCtorsAll ''CalendarStoreCommand ''CalendarStoreRegs)



$(deriveWireCtorsAll ''CalendarStoreEvent)