{-# LANGUAGE DeriveGeneric #-} module Types.Purchase where import Data.Aeson import GHC.Generics import Data.OpenApi (ToSchema) data PurchaseDetail = PurchaseDetail { purchaseDetailProduct :: Int , purchaseDetailAmount :: Int } deriving (Generic, Show) instance ToJSON PurchaseDetail where toEncoding = genericToEncoding defaultOptions instance FromJSON PurchaseDetail instance ToSchema PurchaseDetail data PurchaseResult = PurchaseResult { purchaseResultFlag :: PurchaseResultFlag , purchaseResultMissingItems :: [PurchaseDetail] } deriving (Generic, Show) instance ToJSON PurchaseResult where toEncoding = genericToEncoding defaultOptions instance FromJSON PurchaseResult instance ToSchema PurchaseResult data PurchaseResultFlag = PurchaseOK | PurchaseDebtful | PayAmount Int deriving (Generic, Show, Eq) instance ToJSON PurchaseResultFlag where toEncoding = genericToEncoding defaultOptions instance FromJSON PurchaseResultFlag instance ToSchema PurchaseResultFlag