diff --git a/Handler/Package.hs b/Handler/Package.hs index 6527267..5d6d460 100644 --- a/Handler/Package.hs +++ b/Handler/Package.hs @@ -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") diff --git a/templates/package.hamlet b/templates/package.hamlet index cb54e26..a4fc8ab 100644 --- a/templates/package.hamlet +++ b/templates/package.hamlet @@ -5,6 +5,8 @@
Total downloads: #{downloads} (#{recentDownloads} in last 30 days) + $if null packages
Not included in any snapshots $else