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