From 26d908e252b21ae66e1496bb35ca31c69b53ba25 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Wed, 20 Jan 2016 20:49:36 +0100 Subject: Initial checkin. --- src/Model.hs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/Model.hs (limited to 'src/Model.hs') 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) -- cgit v1.2.3