22 lines
756 B
Haskell
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] []
|