Better caching of package list

This commit is contained in:
Michael Snoyman 2014-11-17 12:22:20 +02:00
parent ae05eaf8fd
commit aae52c21e9

View File

@ -7,16 +7,16 @@ import Import
import Yesod.Core.Types (WidgetT (WidgetT), unWidgetT) import Yesod.Core.Types (WidgetT (WidgetT), unWidgetT)
getPackageListR :: Handler Html getPackageListR :: Handler Html
getPackageListR = do getPackageListR = defaultLayout $ do
packages <- fmap (uniqueByKey . map (E.unValue***strip . E.unValue)) $ runDB $ setTitle "Package list"
E.selectDistinct $ E.from $ \(u,m) -> do cachedWidget (20 * 60) "package-list" $ do
E.where_ (m E.^. MetadataName E.==. u E.^. UploadedName) packages <- fmap (uniqueByKey . map (E.unValue***strip . E.unValue)) $ handlerToWidget $ runDB $
E.orderBy [E.asc $ u E.^. UploadedName] E.selectDistinct $ E.from $ \(u,m) -> do
return $ (u E.^. UploadedName E.where_ (m E.^. MetadataName E.==. u E.^. UploadedName)
,m E.^. MetadataSynopsis) E.orderBy [E.asc $ u E.^. UploadedName]
defaultLayout $ do return $ (u E.^. UploadedName
setTitle "Package list" ,m E.^. MetadataSynopsis)
cachedWidget (5 * 60) "package-list" $(widgetFile "package-list") $(widgetFile "package-list")
where strip x = fromMaybe x (stripSuffix "." x) where strip x = fromMaybe x (stripSuffix "." x)
uniqueByKey = sortBy (comparing fst) . M.toList . M.fromList uniqueByKey = sortBy (comparing fst) . M.toList . M.fromList