{-# 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 Model.Payment (getPayments) 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 <- getPayments incomes <- getIncomes return $ Init { Init.users = map getJsonUser users , Init.me = entityKey user , Init.payments = payments , Init.incomes = map getJsonIncome incomes }