78 lines
1.7 KiB
Haskell
78 lines
1.7 KiB
Haskell
|
{-# LANGUAGE DeriveGeneric #-}
|
||
|
module Model.Beverage where
|
||
|
|
||
|
import Data.Text as T
|
||
|
import Data.Time.Calendar (Day)
|
||
|
import Data.Profunctor.Product (p12)
|
||
|
|
||
|
import Data.Aeson
|
||
|
import Data.Aeson.Types
|
||
|
|
||
|
import GHC.Generics
|
||
|
|
||
|
import Opaleye as O
|
||
|
|
||
|
data Beverage = Beverage
|
||
|
{ beverageIdent :: T.Text
|
||
|
, beveragePrice :: Int
|
||
|
, beverageAmount :: Int
|
||
|
, beverageVanish :: Int
|
||
|
, beverageMl :: Int
|
||
|
, beverageAvatar :: Maybe Word
|
||
|
, beverageSupplier :: Maybe Word
|
||
|
, beverageMaxAmount :: Int
|
||
|
, beverageTotalBought :: Int
|
||
|
, beverageAmonutPerCrate :: Int
|
||
|
, beveragePricePerCrate :: Maybe Int
|
||
|
, beverageArtNr :: Maybe T.Text
|
||
|
} deriving (Generic, Show)
|
||
|
|
||
|
instance ToJSON Beverage where
|
||
|
toEncoding = genericToEncoding defaultOptions
|
||
|
|
||
|
instance FromJSON Beverage
|
||
|
|
||
|
beverageTable :: Table
|
||
|
( Field SqlText
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, FieldNullable SqlInt4
|
||
|
, FieldNullable SqlInt4
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, FieldNullable SqlInt8
|
||
|
, FieldNullable SqlText
|
||
|
)
|
||
|
( Field SqlText
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, FieldNullable SqlInt4
|
||
|
, FieldNullable SqlInt4
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, Field SqlInt8
|
||
|
, FieldNullable SqlInt8
|
||
|
, FieldNullable SqlText
|
||
|
)
|
||
|
beverageTable = table "beverage" (
|
||
|
p12
|
||
|
( tableField "ident"
|
||
|
, tableField "price"
|
||
|
, tableField "amount"
|
||
|
, tableField "vanish"
|
||
|
, tableField "ml"
|
||
|
, tableField "avatar"
|
||
|
, tableField "supplier"
|
||
|
, tableField "max_amount"
|
||
|
, tableField "total_bought"
|
||
|
, tableField "amount_per_crate"
|
||
|
, tableField "price_per_crate"
|
||
|
, tableField "art_nr"
|
||
|
)
|
||
|
)
|