summaryrefslogtreecommitdiff
path: root/src/Language/GraphQL
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-07-17 09:37:29 +0200
committerEugen Wissner <belka@caraus.de>2024-07-17 09:37:29 +0200
commit16bcdca066715c74145b38bde5cdd6d901683704 (patch)
tree580409244b9faed0c0c19ba80bec5c390a646d69 /src/Language/GraphQL
parentaa28bdd7fe6a6b9c3355a3e5aed041f7c5773a57 (diff)
downloadgraphql-spice-16bcdca066715c74145b38bde5cdd6d901683704.tar.gz
Update error messages for enum and union support
Diffstat (limited to 'src/Language/GraphQL')
-rw-r--r--src/Language/GraphQL/Class.hs6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/Language/GraphQL/Class.hs b/src/Language/GraphQL/Class.hs
index 45159d1..e08ec65 100644
--- a/src/Language/GraphQL/Class.hs
+++ b/src/Language/GraphQL/Class.hs
@@ -322,7 +322,7 @@ deriveFromGraphQL typeName = do
NewtypeD _ _ _ _ cons' _
| RecC dataConName varBangTypes <- cons' ->
withRecordConstructor dataConName varBangTypes
- _ -> error "Only records with a single data constructor are supported"
+ _ -> error "Only input objects and enums are supported if all member types have a FromGraphQL instance"
where
enumMemberPattern (NormalC normalName []) =
let fromGraphQLF = conP (mkName "Type.Enum") [litP $ stringL $ nameBase normalName]
@@ -376,7 +376,7 @@ deriveToGraphQL typeName = do
NewtypeD _ _ _ _ cons' _
| RecC dataConName varBangTypes <- cons' ->
withRecordConstructor dataConName varBangTypes
- _ -> error "Only records with a single data constructor are supported"
+ _ -> error "Only objects, unions and enums are supported if all member types have a ToGraphQL instance"
where
conTName = conT typeName
collectEnumMemberNames (NormalC normalName []) = Just normalName
@@ -397,7 +397,7 @@ deriveToGraphQL typeName = do
enumMemberPattern <$> enumMemberNames
| Just unionMembers <- traverse collectUnionMembers cons' =
unionMemberPattern <$> unionMembers
- | otherwise = error "Enum member should be a normal constructor without parameters"
+ | otherwise = error "All data constructors should have either no parameters (Enum) or one parameter (Union)"
withRecordConstructor dataConName varBangTypes = do
fieldAliases <- traverse newFieldAliases varBangTypes
let fBody =