mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 04:08:29 +01:00
29 lines
1.2 KiB
Haskell
29 lines
1.2 KiB
Haskell
module Handler.Package where
|
|
|
|
import Import
|
|
import qualified Database.Esqueleto as E
|
|
import Database.Esqueleto ((^.), (&&.), Value (Value))
|
|
|
|
getPackageR :: PackageName -> Handler Html
|
|
getPackageR pn = do
|
|
let maxSnaps = 10
|
|
asInt :: Int -> Int
|
|
asInt = id
|
|
haddocksLink ident version =
|
|
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
|
(latestVersion, packages) <- runDB $ do
|
|
mupload <- selectFirst [UploadedName ==. pn] [Desc UploadedUploaded]
|
|
Entity _ (Uploaded _ latestVersion _) <- maybe notFound return mupload
|
|
packages <- E.select $ E.from $ \(p, s) -> do
|
|
E.where_ $ (p ^. PackageStackage E.==. s ^. StackageId)
|
|
&&. (p ^. PackageName' E.==. E.val pn)
|
|
&&. (s ^. StackageTitle `E.like` E.val "%, exclusive")
|
|
E.orderBy [E.desc $ s ^. StackageUploaded]
|
|
E.limit maxSnaps
|
|
--selectList [PackageName' ==. pn] [LimitTo 10, Desc PackageStackage]
|
|
return (p ^. PackageVersion, s ^. StackageTitle, s ^. StackageIdent, s ^. StackageHasHaddocks)
|
|
return (latestVersion, packages)
|
|
defaultLayout $ do
|
|
setTitle $ toHtml pn
|
|
$(widgetFile "package")
|