mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
always sorts versions outside sql
This commit is contained in:
@@ -491,15 +491,13 @@ mapDependencyMetadata domain metadata (appId, depInfo) = do
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fetchAllAppVersions :: Key SApp -> HandlerFor RegistryCtx ([VersionInfo], ReleaseNotes)
|
fetchAllAppVersions :: Key SApp -> HandlerFor RegistryCtx ([VersionInfo], ReleaseNotes)
|
||||||
fetchAllAppVersions appId = do
|
fetchAllAppVersions appId = do
|
||||||
entityAppVersions <- runDB $ P.selectList [SVersionAppId P.==. appId] [] -- orderby version
|
entityAppVersions <- runDB $ P.selectList [SVersionAppId P.==. appId] []
|
||||||
let vers = entityVal <$> entityAppVersions
|
let vers = entityVal <$> entityAppVersions
|
||||||
let vv = mapSVersionToVersionInfo vers
|
let vv = mapSVersionToVersionInfo vers
|
||||||
let mappedVersions = ReleaseNotes $ HM.fromList $ (\v -> (versionInfoVersion v, versionInfoReleaseNotes v)) <$> vv
|
let mappedVersions = ReleaseNotes $ HM.fromList $ (\v -> (versionInfoVersion v, versionInfoReleaseNotes v)) <$> vv
|
||||||
pure (vv, mappedVersions)
|
pure (sortOn (Down . versionInfoVersion) vv, mappedVersions)
|
||||||
where
|
where
|
||||||
mapSVersionToVersionInfo :: [SVersion] -> [VersionInfo]
|
mapSVersionToVersionInfo :: [SVersion] -> [VersionInfo]
|
||||||
mapSVersionToVersionInfo sv = do
|
mapSVersionToVersionInfo sv = do
|
||||||
@@ -514,23 +512,23 @@ fetchAllAppVersions appId = do
|
|||||||
<$> sv
|
<$> sv
|
||||||
|
|
||||||
fetchMostRecentAppVersions :: MonadIO m => Key SApp -> ReaderT SqlBackend m [Entity SVersion]
|
fetchMostRecentAppVersions :: MonadIO m => Key SApp -> ReaderT SqlBackend m [Entity SVersion]
|
||||||
fetchMostRecentAppVersions appId = select $ do
|
fetchMostRecentAppVersions appId = sortResults $ select $ do
|
||||||
version <- from $ table @SVersion
|
version <- from $ table @SVersion
|
||||||
where_ (version ^. SVersionAppId ==. val appId)
|
where_ (version ^. SVersionAppId ==. val appId)
|
||||||
orderBy [desc (version ^. SVersionNumber)]
|
|
||||||
limit 1
|
limit 1
|
||||||
pure version
|
pure version
|
||||||
|
where sortResults = fmap $ sortOn (Down . sVersionNumber . entityVal)
|
||||||
|
|
||||||
fetchLatestApp :: MonadIO m => PkgId -> ReaderT SqlBackend m (Maybe (P.Entity SApp, P.Entity SVersion))
|
fetchLatestApp :: MonadIO m => PkgId -> ReaderT SqlBackend m (Maybe (P.Entity SApp, P.Entity SVersion))
|
||||||
fetchLatestApp appId = selectOne $ do
|
fetchLatestApp appId = fmap headMay . sortResults . select $ do
|
||||||
(service :& version) <-
|
(service :& version) <-
|
||||||
from
|
from
|
||||||
$ table @SApp
|
$ table @SApp
|
||||||
`innerJoin` table @SVersion
|
`innerJoin` table @SVersion
|
||||||
`on` (\(service :& version) -> service ^. SAppId ==. version ^. SVersionAppId)
|
`on` (\(service :& version) -> service ^. SAppId ==. version ^. SVersionAppId)
|
||||||
where_ (service ^. SAppAppId ==. val appId)
|
where_ (service ^. SAppAppId ==. val appId)
|
||||||
orderBy [desc (version ^. SVersionNumber)]
|
|
||||||
pure (service, version)
|
pure (service, version)
|
||||||
|
where sortResults = fmap $ sortOn (Down . sVersionNumber . entityVal . snd)
|
||||||
|
|
||||||
fetchLatestAppAtVersion :: MonadIO m
|
fetchLatestAppAtVersion :: MonadIO m
|
||||||
=> PkgId
|
=> PkgId
|
||||||
@@ -566,7 +564,6 @@ fetchPackageMetadata = do
|
|||||||
$ table @SApp
|
$ table @SApp
|
||||||
`innerJoin` table @SVersion
|
`innerJoin` table @SVersion
|
||||||
`on` (\(service :& version) -> (service ^. SAppId) ==. version ^. SVersionAppId)
|
`on` (\(service :& version) -> (service ^. SAppId) ==. version ^. SVersionAppId)
|
||||||
orderBy [desc (version ^. SVersionNumber)]
|
|
||||||
Database.Esqueleto.Experimental.groupBy $ (service ^. SAppAppId, version ^. SVersionNumber)
|
Database.Esqueleto.Experimental.groupBy $ (service ^. SAppAppId, version ^. SVersionNumber)
|
||||||
pure (service ^. SAppAppId, arrayAggDistinct (version ^. SVersionNumber))
|
pure (service ^. SAppAppId, arrayAggDistinct (version ^. SVersionNumber))
|
||||||
(categories, versions) <- UnliftIO.Async.concurrently categoriesQuery versionsQuery
|
(categories, versions) <- UnliftIO.Async.concurrently categoriesQuery versionsQuery
|
||||||
@@ -575,7 +572,8 @@ fetchPackageMetadata = do
|
|||||||
$ \(appId, categories') -> (unValue appId, catMaybes $ fromMaybe [] (unValue categories'))
|
$ \(appId, categories') -> (unValue appId, catMaybes $ fromMaybe [] (unValue categories'))
|
||||||
let v = foreach versions $ \(appId, versions') -> (unValue appId, fromMaybe [] (unValue versions'))
|
let v = foreach versions $ \(appId, versions') -> (unValue appId, fromMaybe [] (unValue versions'))
|
||||||
let vv = HM.fromListWithKey (\_ vers vers' -> (++) vers vers') v
|
let vv = HM.fromListWithKey (\_ vers vers' -> (++) vers vers') v
|
||||||
pure $ HM.intersectionWith (\vers cts -> (cts, vers)) (HM.fromList c) vv
|
pure $ HM.intersectionWith (\cts vers -> (vers, cts)) (HM.fromList c) (sortVersions vv)
|
||||||
|
where sortVersions = fmap $ sortOn Down
|
||||||
|
|
||||||
fetchAppCategories :: MonadIO m => Key SApp -> ReaderT SqlBackend m [P.Entity ServiceCategory]
|
fetchAppCategories :: MonadIO m => Key SApp -> ReaderT SqlBackend m [P.Entity ServiceCategory]
|
||||||
fetchAppCategories appId = select $ do
|
fetchAppCategories appId = select $ do
|
||||||
|
|||||||
Reference in New Issue
Block a user