mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 04:08:29 +01:00
Display download stats on package page
This commit is contained in:
parent
f42eb69498
commit
1d46dcf5d6
@ -3,6 +3,7 @@ module Handler.Package where
|
||||
import Import
|
||||
import qualified Database.Esqueleto as E
|
||||
import Database.Esqueleto ((^.), (&&.), Value (Value))
|
||||
import Data.Time (addUTCTime)
|
||||
|
||||
getPackageR :: PackageName -> Handler Html
|
||||
getPackageR pn = do
|
||||
@ -11,7 +12,7 @@ getPackageR pn = do
|
||||
asInt = id
|
||||
haddocksLink ident version =
|
||||
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
||||
(latestVersion, packages) <- runDB $ do
|
||||
(latestVersion, packages, downloads, recentDownloads) <- runDB $ do
|
||||
mupload <- selectFirst [UploadedName ==. pn] [Desc UploadedUploaded]
|
||||
Entity _ (Uploaded _ latestVersion _) <- maybe notFound return mupload
|
||||
packages <- E.select $ E.from $ \(p, s) -> do
|
||||
@ -22,7 +23,11 @@ getPackageR pn = do
|
||||
E.limit maxSnaps
|
||||
--selectList [PackageName' ==. pn] [LimitTo 10, Desc PackageStackage]
|
||||
return (p ^. PackageVersion, s ^. StackageTitle, s ^. StackageIdent, s ^. StackageHasHaddocks)
|
||||
return (latestVersion, packages)
|
||||
downloads <- count [DownloadPackage ==. pn]
|
||||
now <- liftIO getCurrentTime
|
||||
let nowMinus30 = addUTCTime (-30 * 24 * 60 * 60) now
|
||||
recentDownloads <- count [DownloadPackage ==. pn, DownloadTimestamp >=. nowMinus30]
|
||||
return (latestVersion, packages, downloads, recentDownloads)
|
||||
defaultLayout $ do
|
||||
setTitle $ toHtml pn
|
||||
$(widgetFile "package")
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
<h1>#{pn}
|
||||
<h2>Latest uploaded version: #{latestVersion}
|
||||
|
||||
<p>Total downloads: #{downloads} (#{recentDownloads} in last 30 days)
|
||||
|
||||
$if null packages
|
||||
<p>Not included in any snapshots
|
||||
$else
|
||||
|
||||
Loading…
Reference in New Issue
Block a user