module Site ( fetch ) where import Foundation ( Handler ) import Model import Util ( compileMustache, entityToTuple ) import Text.Mustache ( Template ) import Yesod ( Key, runDB, selectList, (<-.) ) import qualified Data.Map as M import qualified Data.Text as T compileTemplates :: M.Map (Key Site) Site -> M.Map (Key Site) (Site, Template) compileTemplates = fmap $ \site -> (site, compile site) where compile site = T.unpack (siteIcon site) `compileMustache` siteTemplate site fetch :: [Key Site] -> Handler (M.Map (Key Site) (Site, Template)) fetch = fmap compileTemplates . fetchSites fetchSites :: [SiteId] -> Handler (M.Map (Key Site) Site) fetchSites siteIds = runDB $ M.fromList . map entityToTuple <$> selectList [SiteId <-. siteIds] []