{-# LANGUAGE OverloadedStrings #-} module Model.Init ( getInit ) where import Control.Monad.IO.Class (liftIO) import Database.Persist import Model.Database import Model.Json.Init (Init, Init(Init)) import qualified Model.Payment as Payment import Model.User (getUsers, getJsonUser) import Model.Income (getIncomes, getJsonIncome) import qualified Model.Json.Init as Init getInit :: Entity User -> Persist Init getInit user = liftIO . runDb $ do users <- getUsers payments <- Payment.list incomes <- getIncomes return $ Init { Init.users = map getJsonUser users , Init.me = entityKey user , Init.payments = payments , Init.incomes = map getJsonIncome incomes }