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