default to 030 if eos-version param missing (#130)

This commit is contained in:
Lucy C
2023-01-08 17:06:18 -07:00
committed by GitHub
parent 2ba9b71df6
commit b7155e3139

View File

@@ -20,15 +20,13 @@ import Database.Esqueleto.Experimental (
import Foundation (Handler, RegistryCtx (appSettings)) import Foundation (Handler, RegistryCtx (appSettings))
import Handler.Package.V0.ReleaseNotes (ReleaseNotes (..)) import Handler.Package.V0.ReleaseNotes (ReleaseNotes (..))
import Handler.Util (queryParamAs, getArchQuery) 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 Model (EntityField (..), OsVersion (..))
import Orphans.Emver () import Orphans.Emver ()
import Startlude (Bool (..), Down (..), Eq, Generic, Maybe (..), Ord ((<)), Show, Text, const, filter, fst, head, maybe, pure, sortOn, ($), (&&&), (.), (<$>), (<&>), (<=)) import Startlude (Down (..), Eq, Generic, Maybe (..), Ord ((<)), Show, Text, filter, fst, head, pure, sortOn, ($), (&&&), (.), (<$>), (<&>), (<=))
import Yesod (ToContent (toContent), ToTypedContent (..), YesodPersist (runDB), getsYesod, sendResponseStatus) import Yesod (ToContent (toContent), ToTypedContent (..), YesodPersist (runDB), getsYesod)
import Yesod.Core.Types (JSONResponse (..)) import Yesod.Core.Types (JSONResponse (..))
import Settings (AppSettings(maxEosVersion)) import Settings (AppSettings(maxEosVersion))
import Network.HTTP.Types (status400)
import Lib.Error (S9Error(InvalidParamsE))
import Lib.Types.Core (OsArch(RASPBERRYPI)) import Lib.Types.Core (OsArch(RASPBERRYPI))
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
@@ -50,11 +48,8 @@ instance ToTypedContent EosRes where
getEosVersionR :: Handler (JSONResponse (Maybe EosRes)) getEosVersionR :: Handler (JSONResponse (Maybe EosRes))
getEosVersionR = do getEosVersionR = do
currentEosVersion <- queryParamAs "eos-version" parseVersion currentEosVersion <- fromMaybe Version { unVersion = (0,3,0,0) } <$> queryParamAs "eos-version" parseVersion
arch <- fromMaybe RASPBERRYPI <$> getArchQuery arch <- fromMaybe RASPBERRYPI <$> getArchQuery
case currentEosVersion of
Nothing -> sendResponseStatus status400 (InvalidParamsE "Param is required" "eos-version")
Just currentEosVersion' -> do
maxVersion <- getsYesod $ maxEosVersion . appSettings maxVersion <- getsYesod $ maxEosVersion . appSettings
allEosVersions <- runDB $ allEosVersions <- runDB $
select $ do select $ do
@@ -62,13 +57,13 @@ getEosVersionR = do
where_ (vers ^. OsVersionArch ==. val (Just arch)) where_ (vers ^. OsVersionArch ==. val (Just arch))
orderBy [desc (vers ^. OsVersionNumber)] orderBy [desc (vers ^. OsVersionNumber)]
pure vers pure vers
let osV = determineMaxEosVersionAvailable maxVersion currentEosVersion' $ entityVal <$> allEosVersions let osV = determineMaxEosVersionAvailable maxVersion currentEosVersion $ entityVal <$> allEosVersions
let mLatest = head osV let mLatest = head osV
let mappedVersions = let mappedVersions =
ReleaseNotes $ ReleaseNotes $
HM.fromList $ HM.fromList $
sortOn (Down . fst) $ sortOn (Down . fst) $
filter (maybe (const True) (<) currentEosVersion . fst) $ filter ((<) currentEosVersion . fst) $
((osVersionNumber &&& osVersionReleaseNotes)) ((osVersionNumber &&& osVersionReleaseNotes))
<$> osV <$> osV
pure . JSONResponse $ pure . JSONResponse $