mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
implements release notes filtering
This commit is contained in:
@@ -37,6 +37,9 @@ import Data.Aeson ( decode
|
|||||||
)
|
)
|
||||||
import qualified Data.Attoparsec.Text as Atto
|
import qualified Data.Attoparsec.Text as Atto
|
||||||
|
|
||||||
|
import Data.Attoparsec.Text ( Parser
|
||||||
|
, parseOnly
|
||||||
|
)
|
||||||
import Data.ByteArray.Encoding ( Base(..)
|
import Data.ByteArray.Encoding ( Base(..)
|
||||||
, convertToBase
|
, convertToBase
|
||||||
)
|
)
|
||||||
@@ -116,6 +119,7 @@ import Util.Shared ( filterDependencyBestVersion
|
|||||||
, getVersionSpecFromQuery
|
, getVersionSpecFromQuery
|
||||||
)
|
)
|
||||||
import Yesod.Core ( Content(ContentFile)
|
import Yesod.Core ( Content(ContentFile)
|
||||||
|
, MonadHandler
|
||||||
, MonadResource
|
, MonadResource
|
||||||
, RenderRoute(renderRoute)
|
, RenderRoute(renderRoute)
|
||||||
, TypedContent
|
, TypedContent
|
||||||
@@ -133,6 +137,14 @@ import Yesod.Core.Types ( JSONResponse(..) )
|
|||||||
import Yesod.Persist ( YesodDB )
|
import Yesod.Persist ( YesodDB )
|
||||||
import Yesod.Persist.Core ( YesodPersist(runDB) )
|
import Yesod.Persist.Core ( YesodPersist(runDB) )
|
||||||
|
|
||||||
|
queryParamAs :: MonadHandler m => Text -> Parser a -> m (Maybe a)
|
||||||
|
queryParamAs k p = lookupGetParam k >>= \case
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
Just x -> case parseOnly p x of
|
||||||
|
Left e ->
|
||||||
|
sendResponseStatus @_ @Text status400 [i|Invalid Request! The query parameter '#{k}' failed to parse: #{e}|]
|
||||||
|
Right a -> pure (Just a)
|
||||||
|
|
||||||
getInfoR :: Handler (JSONResponse InfoRes)
|
getInfoR :: Handler (JSONResponse InfoRes)
|
||||||
getInfoR = do
|
getInfoR = do
|
||||||
name <- getsYesod $ marketplaceName . appSettings
|
name <- getsYesod $ marketplaceName . appSettings
|
||||||
@@ -144,6 +156,7 @@ getInfoR = do
|
|||||||
|
|
||||||
getEosVersionR :: Handler (JSONResponse (Maybe EosRes))
|
getEosVersionR :: Handler (JSONResponse (Maybe EosRes))
|
||||||
getEosVersionR = do
|
getEosVersionR = do
|
||||||
|
eosVersion <- queryParamAs "eos-version" parseVersion
|
||||||
allEosVersions <- runDB $ select $ do
|
allEosVersions <- runDB $ select $ do
|
||||||
vers <- from $ table @OsVersion
|
vers <- from $ table @OsVersion
|
||||||
orderBy [desc (vers ^. OsVersionCreatedAt)]
|
orderBy [desc (vers ^. OsVersionCreatedAt)]
|
||||||
@@ -154,6 +167,7 @@ getEosVersionR = do
|
|||||||
ReleaseNotes
|
ReleaseNotes
|
||||||
$ HM.fromList
|
$ HM.fromList
|
||||||
$ sortOn (Down . fst)
|
$ sortOn (Down . fst)
|
||||||
|
$ filter (maybe (const True) (<) eosVersion . fst)
|
||||||
$ (\v -> (osVersionNumber v, osVersionReleaseNotes v))
|
$ (\v -> (osVersionNumber v, osVersionReleaseNotes v))
|
||||||
<$> osV
|
<$> osV
|
||||||
pure . JSONResponse $ mLatest <&> \latest -> EosRes { eosResVersion = osVersionNumber latest
|
pure . JSONResponse $ mLatest <&> \latest -> EosRes { eosResVersion = osVersionNumber latest
|
||||||
|
|||||||
Reference in New Issue
Block a user