aboutsummaryrefslogtreecommitdiff
path: root/src/Model.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Model.hs')
-rw-r--r--src/Model.hs28
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)