mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 10:21:51 +00:00
simplify getting dep metadata
This commit is contained in:
@@ -131,8 +131,6 @@ getPackageIndexR = do
|
||||
ram <- getRamQuery
|
||||
hardwareDevices <- getHardwareDevicesQuery
|
||||
communityVersion <- getsYesod $ communityVersion . appSettings
|
||||
$logWarn $ "***COMMUNITY"
|
||||
$logWarn $ show $ osPredicate communityVersion
|
||||
pkgIds <- getPkgIdsQuery
|
||||
category <- getCategoryQuery
|
||||
page <- fromMaybe 1 <$> getPageQuery
|
||||
@@ -170,7 +168,7 @@ getPackageIndexR = do
|
||||
.| sinkList
|
||||
|
||||
-- NOTE: if a package's dependencies do not meet the system requirements, it is currently omitted from the list
|
||||
pkgsWithDependencies <- runDB $ mapConcurrently (getPackageDependencies osPredicate) filteredPackages
|
||||
pkgsWithDependencies <- runDB $ mapConcurrently getPackageDependencies filteredPackages
|
||||
PackageListRes <$> runConcurrently (zipWithM (Concurrently .* constructPackageListApiRes) filteredPackages pkgsWithDependencies)
|
||||
|
||||
getPkgIdsQuery :: Handler (Maybe [PackageReq])
|
||||
@@ -215,15 +213,14 @@ getRamQuery = parseQueryParam "hardware.ram" ((flip $ note . mappend "Invalid 'r
|
||||
|
||||
getPackageDependencies ::
|
||||
(MonadIO m, MonadLogger m, MonadResource m, Has PkgRepo r, MonadReader r m) =>
|
||||
(Version -> Bool) ->
|
||||
PackageMetadata ->
|
||||
ReaderT SqlBackend m (HashMap PkgId DependencyRes)
|
||||
getPackageDependencies osPredicate PackageMetadata{packageMetadataPkgId = pkg, packageMetadataPkgVersion = pkgVersion} =
|
||||
getPackageDependencies PackageMetadata{packageMetadataPkgId = pkg, packageMetadataPkgVersion = pkgVersion} =
|
||||
do
|
||||
pkgDepInfo' <- getPkgDependencyData pkg pkgVersion
|
||||
let pkgDepInfo = fmap (\a -> (entityVal $ fst a, entityVal $ snd a)) pkgDepInfo'
|
||||
pkgDepInfoWithVersions <- traverse getDependencyVersions (fst <$> pkgDepInfo)
|
||||
let depMetadata = zipWith (selectDependencyBestVersion osPredicate) pkgDepInfo pkgDepInfoWithVersions
|
||||
let depMetadata = zipWith formatDependencyInfo pkgDepInfo pkgDepInfoWithVersions
|
||||
lift $
|
||||
fmap HM.fromList $
|
||||
for depMetadata $ \(depId, title, v, isLocal) -> do
|
||||
@@ -296,4 +293,13 @@ selectDependencyBestVersion osPredicate pkgDepInfo depVersions = do
|
||||
Just bestVersion -> (pkgId, versionRecordTitle bestVersion, versionRecordNumber bestVersion, isLocal)
|
||||
-- use latest version of dep for metadata info
|
||||
Nothing -> (pkgId, versionRecordTitle latestDepVersion, versionRecordNumber latestDepVersion, isLocal)
|
||||
else (pkgId, versionRecordTitle latestDepVersion, versionRecordNumber latestDepVersion, isLocal)
|
||||
else (pkgId, versionRecordTitle latestDepVersion, versionRecordNumber latestDepVersion, isLocal)
|
||||
|
||||
formatDependencyInfo :: (PkgDependency, PkgRecord) -> [VersionRecord] -> (PkgId, Text, Version, Bool)
|
||||
formatDependencyInfo pkgDepInfo depVersions = do
|
||||
let pkgDepRecord = fst pkgDepInfo
|
||||
let isLocal = pkgRecordHidden $ snd pkgDepInfo
|
||||
let depId = pkgDependencyDepId pkgDepRecord
|
||||
let pkgId = unPkgRecordKey depId
|
||||
let latestDepVersion = head $ sortOn (Down . versionRecordNumber) depVersions
|
||||
(pkgId, versionRecordTitle latestDepVersion, versionRecordNumber latestDepVersion, isLocal)
|
||||
@@ -101,6 +101,7 @@ import Settings (AppSettings(whitelist))
|
||||
import Network.HTTP.Types (status200)
|
||||
import Database.Persist (insert_)
|
||||
import Yesod (lookupPostParam)
|
||||
import Data.Maybe (isNothing)
|
||||
|
||||
orThrow :: MonadHandler m => m (Maybe a) -> m a -> m a
|
||||
orThrow action other =
|
||||
@@ -240,7 +241,7 @@ getPkgArch = do
|
||||
filterDeprecatedVersions :: Version -> (Version -> Bool) -> [VersionRecord] -> [VersionRecord]
|
||||
filterDeprecatedVersions communityVersion osPredicate vrs = do
|
||||
if (osPredicate communityVersion)
|
||||
then filter (\v -> not $ isJust $ versionRecordDeprecatedAt v) $ vrs
|
||||
then filter (\v -> isNothing $ versionRecordDeprecatedAt v) $ vrs
|
||||
else vrs
|
||||
|
||||
filterDevices :: (MonadUnliftIO m) => (MM.MultiMap Text Text) -> [(VersionRecord, VersionPlatform)] -> m [VersionRecord]
|
||||
|
||||
Reference in New Issue
Block a user