mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-02-09 17:47:29 +01:00
Attempt to replace expensive query with a Haskell alternative
This commit is contained in:
parent
af20bc6291
commit
17ad688aad
@ -611,16 +611,23 @@ snapshotPackageInfoQuery customize =
|
|||||||
, spiChangelog = unValue cl
|
, spiChangelog = unValue cl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getSnapshotPackageLatestVersionQuery ::
|
getSnapshotPackageLatestVersionQuery ::
|
||||||
PackageNameP -> ReaderT SqlBackend (RIO env) (Maybe SnapshotPackageInfo)
|
PackageNameP -> ReaderT SqlBackend (RIO env) (Maybe SnapshotPackageInfo)
|
||||||
getSnapshotPackageLatestVersionQuery pname =
|
getSnapshotPackageLatestVersionQuery pname = do
|
||||||
fmap snd . listToMaybe <$>
|
versions <-
|
||||||
(snapshotPackageInfoQuery $ \_sp s pn v spiQ -> do
|
select $
|
||||||
where_ (pn ^. PackageNameName ==. val pname)
|
from $ \(sp `InnerJoin` pn `InnerJoin` v) -> do
|
||||||
orderBy [desc (versionArray v), desc (s ^. SnapshotCreated)]
|
on (sp ^. SnapshotPackageVersion ==. v ^. VersionId)
|
||||||
limit 1
|
on (sp ^. SnapshotPackagePackageName ==. pn ^. PackageNameId)
|
||||||
pure ((), spiQ))
|
where_ $ pn ^. PackageNameName ==. val pname
|
||||||
|
pure (v ^. VersionVersion, sp ^. SnapshotPackageId)
|
||||||
|
case L.sortOn Down [(v, spid) | (Value v, Value spid) <- versions] of
|
||||||
|
[] -> pure Nothing
|
||||||
|
(_, spid):_ ->
|
||||||
|
fmap snd . listToMaybe <$>
|
||||||
|
(snapshotPackageInfoQuery $ \sp _s _pn _v spiQ -> do
|
||||||
|
where_ $ sp ^. SnapshotPackageId ==. val spid
|
||||||
|
pure ((), spiQ))
|
||||||
|
|
||||||
getSnapshotPackageLatestVersion ::
|
getSnapshotPackageLatestVersion ::
|
||||||
GetStackageDatabase env m
|
GetStackageDatabase env m
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user