diff options
Diffstat (limited to 'src/Model.hs')
-rw-r--r-- | src/Model.hs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Model.hs b/src/Model.hs new file mode 100644 index 0000000..bb3d1fe --- /dev/null +++ b/src/Model.hs @@ -0,0 +1,28 @@ +{-# LANGUAGE OverloadedStrings, NoImplicitPrelude #-} +module Model + ( Drink(..) + , drinkId + , drinkDescription + , drinkTimestamp + , drinkLiters + , DrinkDB(..) + ) where + +import ClassyPrelude +import Control.Category.Unicode ((∘)) +import Control.Lens +import qualified Data.Aeson.TH as AesonTH +import qualified Data.Scientific as Scientific +import qualified Data.Time.Clock as Clock + +data Drink = Drink + { _drinkId ∷ Int32 + , _drinkDescription ∷ Text + , _drinkTimestamp ∷ Clock.UTCTime + , _drinkLiters ∷ Scientific.Scientific + } +$(makeLenses ''Drink) +$(AesonTH.deriveJSON (AesonTH.defaultOptions{AesonTH.fieldLabelModifier = toLower ∘ (drop 6)}) ''Drink) + +data DrinkDB = DrinkDB { unDrinkDB ∷ [Drink] } +$(AesonTH.deriveJSON AesonTH.defaultOptions ''DrinkDB) |