mateamt/src/Types/Purchase.hs
2022-07-17 21:28:22 +02:00

46 lines
1,020 B
Haskell

{-# 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