mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-26 02:41:56 +01:00
Use persistent count instead of esqueleto countRows, as suggested by @chrisdone.
This commit is contained in:
parent
54198b5560
commit
980aa4c484
@ -22,17 +22,15 @@ getAllSnapshotsR :: Handler Html
|
|||||||
getAllSnapshotsR = do
|
getAllSnapshotsR = do
|
||||||
now' <- liftIO getCurrentTime
|
now' <- liftIO getCurrentTime
|
||||||
currentPageMay <- lookupGetParam "page"
|
currentPageMay <- lookupGetParam "page"
|
||||||
let currentPage :: Int64
|
let currentPage :: Int
|
||||||
currentPage = fromMaybe 1 (currentPageMay >>= readMay)
|
currentPage = fromMaybe 1 (currentPageMay >>= readMay)
|
||||||
(totalCount :: Int64, groups) <- fmap (groupUp now') $ runDB $ do
|
(totalCount, groups) <- fmap (groupUp now') $ runDB $ do
|
||||||
c <- E.select $ E.from $ \(stackage `E.InnerJoin` user) -> do
|
c <- count ([] :: [Filter Stackage])
|
||||||
E.on (stackage E.^. StackageUser E.==. user E.^. UserId)
|
|
||||||
return E.countRows
|
|
||||||
rs <- E.select $ E.from $ \(stackage `E.InnerJoin` user) -> do
|
rs <- E.select $ E.from $ \(stackage `E.InnerJoin` user) -> do
|
||||||
E.on (stackage E.^. StackageUser E.==. user E.^. UserId)
|
E.on (stackage E.^. StackageUser E.==. user E.^. UserId)
|
||||||
E.orderBy [E.desc $ stackage E.^. StackageUploaded]
|
E.orderBy [E.desc $ stackage E.^. StackageUploaded]
|
||||||
E.limit snapshotsPerPage
|
E.limit snapshotsPerPage
|
||||||
E.offset ((currentPage - 1) * snapshotsPerPage)
|
E.offset ((fromIntegral currentPage - 1) * snapshotsPerPage)
|
||||||
return
|
return
|
||||||
( stackage E.^. StackageSlug
|
( stackage E.^. StackageSlug
|
||||||
, stackage E.^. StackageTitle
|
, stackage E.^. StackageTitle
|
||||||
@ -52,5 +50,4 @@ getAllSnapshotsR = do
|
|||||||
where uncrapify now' c =
|
where uncrapify now' c =
|
||||||
let (E.Value ident, E.Value title, E.Value uploaded, E.Value display, E.Value handle') = c
|
let (E.Value ident, E.Value title, E.Value uploaded, E.Value display, E.Value handle') = c
|
||||||
in (ident,title,format (diff True) (diffUTCTime uploaded now'),display,handle')
|
in (ident,title,format (diff True) (diffUTCTime uploaded now'),display,handle')
|
||||||
groupUp now' ([E.Value c], rs) = (c, (groupBy (on (==) (\(_,_,uploaded,_,_) -> uploaded)) . map (uncrapify now')) rs)
|
groupUp now' (c, rs) = (c, (groupBy (on (==) (\(_,_,uploaded,_,_) -> uploaded)) . map (uncrapify now')) rs)
|
||||||
groupUp _ _ = error "Expected countRows to have exactly 1 result."
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user