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)