mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
fix toJson instances for hashmap keys
This commit is contained in:
committed by
Keagan McClelland
parent
aab1856c6c
commit
1c069ca6f8
@@ -20,7 +20,6 @@ import Data.List
|
|||||||
import Lib.Types.Category
|
import Lib.Types.Category
|
||||||
import Lib.Types.AppIndex
|
import Lib.Types.AppIndex
|
||||||
import qualified Data.HashMap.Strict as HM
|
import qualified Data.HashMap.Strict as HM
|
||||||
import Data.HashMap.Strict (HashMap)
|
|
||||||
import Lib.Types.Emver
|
import Lib.Types.Emver
|
||||||
import qualified Data.List.NonEmpty as NE
|
import qualified Data.List.NonEmpty as NE
|
||||||
import Database.Esqueleto.Experimental
|
import Database.Esqueleto.Experimental
|
||||||
@@ -50,9 +49,14 @@ data ServiceRes = ServiceRes
|
|||||||
, serviceResManifest :: ServiceManifest
|
, serviceResManifest :: ServiceManifest
|
||||||
, serviceResCategories :: [CategoryTitle]
|
, serviceResCategories :: [CategoryTitle]
|
||||||
, serviceResVersions :: [Version]
|
, serviceResVersions :: [Version]
|
||||||
, serviceResDependencyInfo :: HashMap AppIdentifier DependencyInfo
|
, serviceResDependencyInfo :: HM.HashMap AppIdentifier DependencyInfo
|
||||||
, serviceResReleaseNotes :: HashMap Version Text
|
, serviceResReleaseNotes :: HM.HashMap Version Text
|
||||||
} deriving (Show)
|
} deriving (Show, Generic)
|
||||||
|
|
||||||
|
-- newtype ReleaseNotes = ReleaseNotes (HM.HashMap Version Text)
|
||||||
|
-- deriving(Eq, Show)
|
||||||
|
-- instance ToJSON ReleaseNotes where
|
||||||
|
-- toJSON kvs = object [ t .= v | (k,v) <- kvs, let (String t) = toJSON k ]
|
||||||
instance ToJSON ServiceRes where
|
instance ToJSON ServiceRes where
|
||||||
toJSON ServiceRes {..} = object
|
toJSON ServiceRes {..} = object
|
||||||
[ "icon" .= serviceResIcon
|
[ "icon" .= serviceResIcon
|
||||||
@@ -60,8 +64,14 @@ instance ToJSON ServiceRes where
|
|||||||
, "categories" .= serviceResCategories
|
, "categories" .= serviceResCategories
|
||||||
, "versions" .= serviceResVersions
|
, "versions" .= serviceResVersions
|
||||||
, "dependency-metadata" .= serviceResDependencyInfo
|
, "dependency-metadata" .= serviceResDependencyInfo
|
||||||
, "release-notes" .= serviceResReleaseNotes
|
, "release-notes" .= object [ t .= v | (k,v) <- HM.toList serviceResReleaseNotes, let (String t) = toJSON k ]
|
||||||
]
|
]
|
||||||
|
-- >>> encode hm
|
||||||
|
-- "{\"0.2.0\":\"some notes\"}"
|
||||||
|
hm :: Data.Aeson.Value
|
||||||
|
hm = do
|
||||||
|
object [ t .= v | (k,v) <- [("0.2.0", "some notes") :: (Version, Text)], let (String t) = toJSON k ]
|
||||||
|
|
||||||
instance ToContent ServiceRes where
|
instance ToContent ServiceRes where
|
||||||
toContent = toContent . toJSON
|
toContent = toContent . toJSON
|
||||||
instance ToTypedContent ServiceRes where
|
instance ToTypedContent ServiceRes where
|
||||||
@@ -240,7 +250,7 @@ decodeIcon appmgrPath depPath e@(Extension icon) = do
|
|||||||
sendResponseStatus status400 e'
|
sendResponseStatus status400 e'
|
||||||
Right (i' :: URL) -> pure $ i' <> T.pack icon
|
Right (i' :: URL) -> pure $ i' <> T.pack icon
|
||||||
|
|
||||||
fetchAllAppVersions :: Key SApp -> HandlerFor RegistryCtx ([VersionInfo], HashMap Version Text)
|
fetchAllAppVersions :: Key SApp -> HandlerFor RegistryCtx ([VersionInfo], HM.HashMap Version Text)
|
||||||
fetchAllAppVersions appId = do
|
fetchAllAppVersions appId = do
|
||||||
entityAppVersions <- runDB $ P.selectList [SVersionAppId P.==. appId] [] -- orderby version
|
entityAppVersions <- runDB $ P.selectList [SVersionAppId P.==. appId] [] -- orderby version
|
||||||
let vers = entityVal <$> entityAppVersions
|
let vers = entityVal <$> entityAppVersions
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ instance ToJSON ServiceManifest where
|
|||||||
, "version" .= serviceManifestVersion
|
, "version" .= serviceManifestVersion
|
||||||
, "description" .= object ["short" .= serviceManifestDescriptionShort, "long" .= serviceManifestDescriptionLong]
|
, "description" .= object ["short" .= serviceManifestDescriptionShort, "long" .= serviceManifestDescriptionLong]
|
||||||
, "release-notes" .= serviceManifestReleaseNotes
|
, "release-notes" .= serviceManifestReleaseNotes
|
||||||
, "alerts" .= serviceManifestAlerts
|
, "alerts" .= object [ t .= v | (k,v) <- HM.toList serviceManifestAlerts, let (String t) = toJSON k ]
|
||||||
, "dependencies" .= serviceManifestDependencies
|
, "dependencies" .= serviceManifestDependencies
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user