tolerate empty list of os versions

This commit is contained in:
Keagan McClelland
2022-02-28 20:18:01 -07:00
parent 5e807f5c91
commit 4cab448846

View File

@@ -44,8 +44,7 @@ import Data.ByteString.Base64
import qualified Data.ByteString.Lazy as LBS import qualified Data.ByteString.Lazy as LBS
import qualified Data.Conduit.List as CL import qualified Data.Conduit.List as CL
import qualified Data.HashMap.Strict as HM import qualified Data.HashMap.Strict as HM
import Data.List ( head import Data.List ( lookup
, lookup
, sortOn , sortOn
) )
import Data.String.Interpolate.IsString import Data.String.Interpolate.IsString
@@ -130,6 +129,7 @@ import Yesod.Core ( Content(ContentFile)
, sendResponseStatus , sendResponseStatus
, typeOctet , typeOctet
) )
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) )
@@ -142,24 +142,24 @@ getInfoR = do
pure cats pure cats
pure $ InfoRes name $ categoryName . entityVal <$> allCategories pure $ InfoRes name $ categoryName . entityVal <$> allCategories
getEosVersionR :: Handler EosRes getEosVersionR :: Handler (JSONResponse (Maybe EosRes))
getEosVersionR = do getEosVersionR = do
allEosVersions <- runDB $ select $ do allEosVersions <- runDB $ select $ do
vers <- from $ table @OsVersion vers <- from $ table @OsVersion
orderBy [desc (vers ^. OsVersionCreatedAt)] orderBy [desc (vers ^. OsVersionCreatedAt)]
pure vers pure vers
let osV = entityVal <$> allEosVersions let osV = entityVal <$> allEosVersions
let latest = Data.List.head osV let mLatest = head osV
let mappedVersions = let mappedVersions =
ReleaseNotes ReleaseNotes
$ HM.fromList $ HM.fromList
$ sortOn (Down . fst) $ sortOn (Down . fst)
$ (\v -> (osVersionNumber v, osVersionReleaseNotes v)) $ (\v -> (osVersionNumber v, osVersionReleaseNotes v))
<$> osV <$> osV
pure $ EosRes { eosResVersion = osVersionNumber latest pure . JSONResponse $ mLatest <&> \latest -> EosRes { eosResVersion = osVersionNumber latest
, eosResHeadline = osVersionHeadline latest , eosResHeadline = osVersionHeadline latest
, eosResReleaseNotes = mappedVersions , eosResReleaseNotes = mappedVersions
} }
getReleaseNotesR :: PkgId -> Handler ReleaseNotes getReleaseNotesR :: PkgId -> Handler ReleaseNotes
getReleaseNotesR pkg = do getReleaseNotesR pkg = do