Add ToGraphQL and romGraphQL instances for Word

This commit is contained in:
Eugen Wissner 2023-02-19 11:26:27 +01:00
parent 5306730ff8
commit 7c146fe416
Signed by: belka
GPG Key ID: A27FDC1E8EE902C0
3 changed files with 37 additions and 1 deletions

View File

@ -6,6 +6,10 @@ The format is based on
and this project adheres to
[Haskell Package Versioning Policy](https://pvp.haskell.org/).
## [Unreleased]
### Added
- `ToGraphQL` and `FromGraphQL` instances for `Word`.
## [1.0.1.0] - 2023-02-17
### Added
- `ToGraphQL` and `FromGraphQL` typeclasses with instances for basic types.
@ -16,4 +20,5 @@ and this project adheres to
- JSON serialization.
- Test helpers.
[Unreleased]: https://www.caraus.tech/projects/pub-graphql-spice/repository/28/diff?rev=master&rev_to=v1.0.1.0
[1.0.1.0]: https://www.caraus.tech/projects/pub-graphql-spice/repository/28/diff?rev=v1.0.1.0&rev_to=v1.0.0.0

View File

@ -14,6 +14,7 @@ module Language.GraphQL.Class
import Data.Foldable (toList)
import Data.Int (Int8, Int16, Int32, Int64)
import Data.Text (Text)
import Data.Word (Word8, Word16, Word32, Word64)
import qualified Data.Text.Read as Text.Read
import Data.Vector (Vector)
import qualified Data.Vector as Vector
@ -50,6 +51,21 @@ instance ToGraphQL Int32 where
instance ToGraphQL Int64 where
toGraphQL = Type.Int . fromIntegral
instance ToGraphQL Word where
toGraphQL = Type.Int . fromIntegral
instance ToGraphQL Word8 where
toGraphQL = Type.Int . fromIntegral
instance ToGraphQL Word16 where
toGraphQL = Type.Int . fromIntegral
instance ToGraphQL Word32 where
toGraphQL = Type.Int . fromIntegral
instance ToGraphQL Word64 where
toGraphQL = Type.Int . fromIntegral
instance ToGraphQL a => ToGraphQL [a] where
toGraphQL = Type.List . fmap toGraphQL
@ -87,6 +103,21 @@ instance FromGraphQL Int32 where
instance FromGraphQL Int64 where
fromGraphQL = fromGraphQLToIntegral
instance FromGraphQL Word where
fromGraphQL = fromGraphQLToIntegral
instance FromGraphQL Word8 where
fromGraphQL = fromGraphQLToIntegral
instance FromGraphQL Word16 where
fromGraphQL = fromGraphQLToIntegral
instance FromGraphQL Word32 where
fromGraphQL = fromGraphQLToIntegral
instance FromGraphQL Word64 where
fromGraphQL = fromGraphQLToIntegral
instance FromGraphQL a => FromGraphQL [a] where
fromGraphQL (Type.List value) = traverse fromGraphQL value
fromGraphQL _ = Nothing