diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f4f4f8..1318a8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/graphql-spice.cabal b/graphql-spice.cabal index 78e9594..2a709bd 100644 --- a/graphql-spice.cabal +++ b/graphql-spice.cabal @@ -3,7 +3,7 @@ cabal-version: 2.4 name: graphql-spice version: 1.0.1.0 synopsis: GraphQL with batteries -description: Various extensions and convenience functions for the core +description: Various extensions and convenience functions for the core graphql package. category: Language homepage: https://www.caraus.tech/projects/pub-graphql-spice diff --git a/src/Language/GraphQL/Class.hs b/src/Language/GraphQL/Class.hs index 3f52a13..b363fd0 100644 --- a/src/Language/GraphQL/Class.hs +++ b/src/Language/GraphQL/Class.hs @@ -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