aboutsummaryrefslogtreecommitdiff
path: root/src/Model.hs
blob: bb3d1feb69207a6ed410a6fedba4dd2331dbaa71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)