mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
default to 030 if eos-version param missing (#130)
This commit is contained in:
@@ -20,15 +20,13 @@ import Database.Esqueleto.Experimental (
|
||||
import Foundation (Handler, RegistryCtx (appSettings))
|
||||
import Handler.Package.V0.ReleaseNotes (ReleaseNotes (..))
|
||||
import Handler.Util (queryParamAs, getArchQuery)
|
||||
import Lib.Types.Emver (Version, parseVersion)
|
||||
import Lib.Types.Emver (Version (unVersion), Version(Version), parseVersion)
|
||||
import Model (EntityField (..), OsVersion (..))
|
||||
import Orphans.Emver ()
|
||||
import Startlude (Bool (..), Down (..), Eq, Generic, Maybe (..), Ord ((<)), Show, Text, const, filter, fst, head, maybe, pure, sortOn, ($), (&&&), (.), (<$>), (<&>), (<=))
|
||||
import Yesod (ToContent (toContent), ToTypedContent (..), YesodPersist (runDB), getsYesod, sendResponseStatus)
|
||||
import Startlude (Down (..), Eq, Generic, Maybe (..), Ord ((<)), Show, Text, filter, fst, head, pure, sortOn, ($), (&&&), (.), (<$>), (<&>), (<=))
|
||||
import Yesod (ToContent (toContent), ToTypedContent (..), YesodPersist (runDB), getsYesod)
|
||||
import Yesod.Core.Types (JSONResponse (..))
|
||||
import Settings (AppSettings(maxEosVersion))
|
||||
import Network.HTTP.Types (status400)
|
||||
import Lib.Error (S9Error(InvalidParamsE))
|
||||
import Lib.Types.Core (OsArch(RASPBERRYPI))
|
||||
import Data.Maybe (fromMaybe)
|
||||
|
||||
@@ -50,11 +48,8 @@ instance ToTypedContent EosRes where
|
||||
|
||||
getEosVersionR :: Handler (JSONResponse (Maybe EosRes))
|
||||
getEosVersionR = do
|
||||
currentEosVersion <- queryParamAs "eos-version" parseVersion
|
||||
currentEosVersion <- fromMaybe Version { unVersion = (0,3,0,0) } <$> queryParamAs "eos-version" parseVersion
|
||||
arch <- fromMaybe RASPBERRYPI <$> getArchQuery
|
||||
case currentEosVersion of
|
||||
Nothing -> sendResponseStatus status400 (InvalidParamsE "Param is required" "eos-version")
|
||||
Just currentEosVersion' -> do
|
||||
maxVersion <- getsYesod $ maxEosVersion . appSettings
|
||||
allEosVersions <- runDB $
|
||||
select $ do
|
||||
@@ -62,13 +57,13 @@ getEosVersionR = do
|
||||
where_ (vers ^. OsVersionArch ==. val (Just arch))
|
||||
orderBy [desc (vers ^. OsVersionNumber)]
|
||||
pure vers
|
||||
let osV = determineMaxEosVersionAvailable maxVersion currentEosVersion' $ entityVal <$> allEosVersions
|
||||
let osV = determineMaxEosVersionAvailable maxVersion currentEosVersion $ entityVal <$> allEosVersions
|
||||
let mLatest = head osV
|
||||
let mappedVersions =
|
||||
ReleaseNotes $
|
||||
HM.fromList $
|
||||
sortOn (Down . fst) $
|
||||
filter (maybe (const True) (<) currentEosVersion . fst) $
|
||||
filter ((<) currentEosVersion . fst) $
|
||||
((osVersionNumber &&& osVersionReleaseNotes))
|
||||
<$> osV
|
||||
pure . JSONResponse $
|
||||
|
||||
Reference in New Issue
Block a user