lebd/src/Site.hs

22 lines
756 B
Haskell

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] []