Add morpheus instances for Permission

This commit is contained in:
Saku Laesvuori 2024-01-19 13:26:13 +02:00
parent 53f9d0d323
commit 97fbe99d06
Signed by: slaesvuo
GPG Key ID: 257D284A2A1D3A32
1 changed files with 12 additions and 1 deletions

View File

@ -99,7 +99,18 @@ instance FromJSON Scope where parseJSON = scalarFromJSON <=< parseJSON
data Permission = None
| ReadOnly
| ReadWrite
deriving (Show, Eq, Ord, Read)
deriving (Show, Eq, Ord, Read, Generic)
instance DecodeScalar Permission where
decodeScalar (String s) = maybe (Left $ "invalid Permission: \"" <> s <> "\"") Right $ readMaybe (toString s)
decodeScalar _ = Left "Invalid type for Permission, should be string"
instance EncodeScalar Permission where
encodeScalar = String . show
instance GQLType Permission where type KIND Permission = SCALAR
instance ToJSON Permission where toJSON = scalarToJSON
instance FromJSON Permission where parseJSON = scalarFromJSON <=< parseJSON
readPermission :: Text -> Maybe (Map Scope Permission)
readPermission = rightToMaybe . readEither . toString