mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-30 19:54:47 +00:00
fix ram for other routes
This commit is contained in:
@@ -168,12 +168,13 @@ queryInMetadata query service =
|
|||||||
||. (service ^. VersionRecordTitle `ilike` (%) ++. val query ++. (%))
|
||. (service ^. VersionRecordTitle `ilike` (%) ++. val query ++. (%))
|
||||||
|
|
||||||
|
|
||||||
getPkgDataSource :: (MonadResource m, MonadIO m) => [PkgId] -> [OsArch] -> ConduitT () (Entity VersionRecord) (ReaderT SqlBackend m) ()
|
getPkgDataSource :: (MonadResource m, MonadIO m) => [PkgId] -> [OsArch] -> Maybe Int -> ConduitT () (Entity VersionRecord) (ReaderT SqlBackend m) ()
|
||||||
getPkgDataSource pkgs arches = selectSource $ do
|
getPkgDataSource pkgs arches mRam = selectSource $ do
|
||||||
(pkgData :& vp) <- from $ table @VersionRecord
|
(pkgData :& vp) <- from $ table @VersionRecord
|
||||||
`innerJoin` table @VersionPlatform `on` (\(service :& vp) -> (VersionPlatformPkgId === VersionRecordPkgId) (vp :& service))
|
`innerJoin` table @VersionPlatform `on` (\(service :& vp) -> (VersionPlatformPkgId === VersionRecordPkgId) (vp :& service))
|
||||||
where_ (pkgData ^. VersionRecordNumber ==. vp ^. VersionPlatformVersionNumber)
|
where_ (pkgData ^. VersionRecordNumber ==. vp ^. VersionPlatformVersionNumber)
|
||||||
where_ (vp ^. VersionPlatformArch `in_` (valList $ Just <$> arches))
|
where_ (vp ^. VersionPlatformArch `in_` (valList $ Just <$> arches))
|
||||||
|
where_ (vp ^. VersionPlatformRam ==. val mRam)
|
||||||
where_ (pkgData ^. VersionRecordPkgId `in_` valList (PkgRecordKey <$> pkgs))
|
where_ (pkgData ^. VersionRecordPkgId `in_` valList (PkgRecordKey <$> pkgs))
|
||||||
pure pkgData
|
pure pkgData
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module Handler.Package.V0.Latest where
|
module Handler.Package.V0.Latest where
|
||||||
|
|
||||||
import Conduit (concatMapC, mapC, runConduit, sinkList, (.|))
|
import Conduit (concatMapC, mapC, runConduit, sinkList, (.|), mapMC)
|
||||||
import Data.Aeson (ToJSON (..), eitherDecode)
|
import Data.Aeson (ToJSON (..), eitherDecode)
|
||||||
import Data.ByteString.Lazy qualified as LBS
|
import Data.ByteString.Lazy qualified as LBS
|
||||||
import Data.HashMap.Strict (HashMap)
|
import Data.HashMap.Strict (HashMap)
|
||||||
@@ -9,8 +9,8 @@ import Data.List (lookup)
|
|||||||
import Data.List.NonEmpty.Extra qualified as NE
|
import Data.List.NonEmpty.Extra qualified as NE
|
||||||
import Data.Tuple.Extra (second)
|
import Data.Tuple.Extra (second)
|
||||||
import Database.Queries (collateVersions, getPkgDataSource)
|
import Database.Queries (collateVersions, getPkgDataSource)
|
||||||
import Foundation (Handler, RegistryCtx (appSettings))
|
import Foundation (Handler, RegistryCtx (appSettings, appConnPool))
|
||||||
import Handler.Package.V1.Index (getOsVersionCompat)
|
import Handler.Package.V1.Index (getOsVersionCompat, getRamQuery, getHardwareDevicesQuery)
|
||||||
import Lib.Error (S9Error (..))
|
import Lib.Error (S9Error (..))
|
||||||
import Lib.Types.Core (PkgId)
|
import Lib.Types.Core (PkgId)
|
||||||
import Lib.Types.Emver (Version (..), satisfies)
|
import Lib.Types.Emver (Version (..), satisfies)
|
||||||
@@ -18,7 +18,7 @@ import Model (VersionRecord (..))
|
|||||||
import Network.HTTP.Types (status400)
|
import Network.HTTP.Types (status400)
|
||||||
import Startlude (Bool (True), Down (Down), Either (..), Generic, Maybe (..), NonEmpty, Show, const, encodeUtf8, filter, flip, nonEmpty, pure, ($), (.), (<$>), (<&>), (>>=))
|
import Startlude (Bool (True), Down (Down), Either (..), Generic, Maybe (..), NonEmpty, Show, const, encodeUtf8, filter, flip, nonEmpty, pure, ($), (.), (<$>), (<&>), (>>=))
|
||||||
import Yesod (ToContent (..), ToTypedContent (..), YesodPersist (runDB), YesodRequest (reqGetParams), getRequest, sendResponseStatus)
|
import Yesod (ToContent (..), ToTypedContent (..), YesodPersist (runDB), YesodRequest (reqGetParams), getRequest, sendResponseStatus)
|
||||||
import Handler.Util (filterDeprecatedVersions, getPkgArch)
|
import Handler.Util (filterDeprecatedVersions, getPkgArch, filterDevices)
|
||||||
import Yesod.Core (getsYesod)
|
import Yesod.Core (getsYesod)
|
||||||
import Settings (AppSettings(communityVersion))
|
import Settings (AppSettings(communityVersion))
|
||||||
|
|
||||||
@@ -42,7 +42,10 @@ getVersionLatestR = do
|
|||||||
pkgArch <- getPkgArch >>= \case
|
pkgArch <- getPkgArch >>= \case
|
||||||
Nothing -> pure []
|
Nothing -> pure []
|
||||||
Just a -> pure a
|
Just a -> pure a
|
||||||
|
ram <- getRamQuery
|
||||||
|
hardwareDevices <- getHardwareDevicesQuery
|
||||||
communityServiceDeprecationVersion <- getsYesod $ communityVersion . appSettings
|
communityServiceDeprecationVersion <- getsYesod $ communityVersion . appSettings
|
||||||
|
pool <- getsYesod appConnPool
|
||||||
do
|
do
|
||||||
case lookup "ids" getParameters of
|
case lookup "ids" getParameters of
|
||||||
Nothing -> sendResponseStatus status400 (InvalidParamsE "get:ids" "<MISSING>")
|
Nothing -> sendResponseStatus status400 (InvalidParamsE "get:ids" "<MISSING>")
|
||||||
@@ -50,7 +53,7 @@ getVersionLatestR = do
|
|||||||
Left _ -> sendResponseStatus status400 (InvalidParamsE "get:ids" packages)
|
Left _ -> sendResponseStatus status400 (InvalidParamsE "get:ids" packages)
|
||||||
Right p -> do
|
Right p -> do
|
||||||
let packageList = (,Nothing) <$> p
|
let packageList = (,Nothing) <$> p
|
||||||
let source = getPkgDataSource p pkgArch
|
let source = getPkgDataSource p pkgArch ram
|
||||||
filteredPackages <-
|
filteredPackages <-
|
||||||
runDB $
|
runDB $
|
||||||
runConduit $
|
runConduit $
|
||||||
@@ -61,6 +64,11 @@ getVersionLatestR = do
|
|||||||
.| mapC (second (filter (osPredicate' . versionRecordOsVersion)))
|
.| mapC (second (filter (osPredicate' . versionRecordOsVersion)))
|
||||||
-- filter out deprecated service versions after community registry release
|
-- filter out deprecated service versions after community registry release
|
||||||
.| mapC (second (filterDeprecatedVersions communityServiceDeprecationVersion osPredicate'))
|
.| mapC (second (filterDeprecatedVersions communityServiceDeprecationVersion osPredicate'))
|
||||||
|
-- filter hardware device compatability
|
||||||
|
.| mapMC (\(b,c) -> do
|
||||||
|
l <- filterDevices pool hardwareDevices pkgArch c
|
||||||
|
pure (b, l)
|
||||||
|
)
|
||||||
-- prune empty version sets
|
-- prune empty version sets
|
||||||
.| concatMapC (\(pkgId, vs) -> (pkgId,) <$> nonEmpty vs)
|
.| concatMapC (\(pkgId, vs) -> (pkgId,) <$> nonEmpty vs)
|
||||||
-- grab the latest matching version if it exists
|
-- grab the latest matching version if it exists
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ getPackageIndexR = do
|
|||||||
let (source, packageRanges) = case pkgIds of
|
let (source, packageRanges) = case pkgIds of
|
||||||
Nothing -> (serviceQuerySource category query pkgArch ram, const Any)
|
Nothing -> (serviceQuerySource category query pkgArch ram, const Any)
|
||||||
Just packages ->
|
Just packages ->
|
||||||
let s = getPkgDataSource (packageReqId <$> packages) pkgArch
|
let s = getPkgDataSource (packageReqId <$> packages) pkgArch ram
|
||||||
r = fromMaybe None . (flip lookup $ (packageReqId &&& packageReqVersion) <$> packages)
|
r = fromMaybe None . (flip lookup $ (packageReqId &&& packageReqVersion) <$> packages)
|
||||||
in (s, r)
|
in (s, r)
|
||||||
filteredPackages <-
|
filteredPackages <-
|
||||||
|
|||||||
Reference in New Issue
Block a user