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 Import
|
||||||
import qualified Database.Esqueleto as E
|
import qualified Database.Esqueleto as E
|
||||||
import Database.Esqueleto ((^.), (&&.), Value (Value))
|
import Database.Esqueleto ((^.), (&&.), Value (Value))
|
||||||
|
import Data.Time (addUTCTime)
|
||||||
|
|
||||||
getPackageR :: PackageName -> Handler Html
|
getPackageR :: PackageName -> Handler Html
|
||||||
getPackageR pn = do
|
getPackageR pn = do
|
||||||
@ -11,7 +12,7 @@ getPackageR pn = do
|
|||||||
asInt = id
|
asInt = id
|
||||||
haddocksLink ident version =
|
haddocksLink ident version =
|
||||||
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
HaddockR ident [concat [toPathPiece pn, "-", toPathPiece version]]
|
||||||
(latestVersion, packages) <- runDB $ do
|
(latestVersion, packages, downloads, recentDownloads) <- runDB $ do
|
||||||
mupload <- selectFirst [UploadedName ==. pn] [Desc UploadedUploaded]
|
mupload <- selectFirst [UploadedName ==. pn] [Desc UploadedUploaded]
|
||||||
Entity _ (Uploaded _ latestVersion _) <- maybe notFound return mupload
|
Entity _ (Uploaded _ latestVersion _) <- maybe notFound return mupload
|
||||||
packages <- E.select $ E.from $ \(p, s) -> do
|
packages <- E.select $ E.from $ \(p, s) -> do
|
||||||
@ -22,7 +23,11 @@ getPackageR pn = do
|
|||||||
E.limit maxSnaps
|
E.limit maxSnaps
|
||||||
--selectList [PackageName' ==. pn] [LimitTo 10, Desc PackageStackage]
|
--selectList [PackageName' ==. pn] [LimitTo 10, Desc PackageStackage]
|
||||||
return (p ^. PackageVersion, s ^. StackageTitle, s ^. StackageIdent, s ^. StackageHasHaddocks)
|
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
|
defaultLayout $ do
|
||||||
setTitle $ toHtml pn
|
setTitle $ toHtml pn
|
||||||
$(widgetFile "package")
|
$(widgetFile "package")
|
||||||
|
|||||||
@ -5,6 +5,8 @@
|
|||||||
<h1>#{pn}
|
<h1>#{pn}
|
||||||
<h2>Latest uploaded version: #{latestVersion}
|
<h2>Latest uploaded version: #{latestVersion}
|
||||||
|
|
||||||
|
<p>Total downloads: #{downloads} (#{recentDownloads} in last 30 days)
|
||||||
|
|
||||||
$if null packages
|
$if null packages
|
||||||
<p>Not included in any snapshots
|
<p>Not included in any snapshots
|
||||||
$else
|
$else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user