File tree Expand file tree Collapse file tree 1 file changed +30
-10
lines changed Expand file tree Collapse file tree 1 file changed +30
-10
lines changed Original file line number Diff line number Diff line change @@ -1012,23 +1012,43 @@ public final class GraphQLEnumType {
1012
1012
}
1013
1013
1014
1014
public func serialize( value: Any ) throws -> Map {
1015
- return try valueLookup [ map ( from: value) ] . map { . string( $0. name) } ?? . null
1015
+ let mapValue = try map ( from: value)
1016
+ guard let enumValue = valueLookup [ mapValue] else {
1017
+ throw GraphQLError (
1018
+ message: " Enum ' \( name) ' cannot represent value ' \( mapValue) '. "
1019
+ )
1020
+ }
1021
+ return . string( enumValue. name)
1016
1022
}
1017
1023
1018
1024
public func parseValue( value: Map ) throws -> Map {
1019
- if case let . string( value) = value {
1020
- return nameLookup [ value] ? . value ?? . null
1025
+ guard let valueStr = value. string else {
1026
+ throw GraphQLError (
1027
+ message: " Enum ' \( name) ' cannot represent non-string value ' \( value) '. "
1028
+ )
1021
1029
}
1022
-
1023
- return . null
1030
+ guard let enumValue = nameLookup [ valueStr] else {
1031
+ throw GraphQLError (
1032
+ message: " Value ' \( valueStr) ' does not exist in ' \( name) ' enum. "
1033
+ )
1034
+ }
1035
+ return enumValue. value
1024
1036
}
1025
1037
1026
- public func parseLiteral( valueAST: Value ) -> Map {
1027
- if let enumValue = valueAST as? EnumValue {
1028
- return nameLookup [ enumValue. value] ? . value ?? . null
1038
+ public func parseLiteral( valueAST: Value ) throws -> Map {
1039
+ guard let enumNode = valueAST as? EnumValue else {
1040
+ throw GraphQLError (
1041
+ message: " Enum ' \( name) ' cannot represent non-enum value ' \( valueAST) '. " ,
1042
+ nodes: [ valueAST]
1043
+ )
1029
1044
}
1030
-
1031
- return . null
1045
+ guard let enumValue = nameLookup [ enumNode. value] else {
1046
+ throw GraphQLError (
1047
+ message: " Value ' \( enumNode) ' does not exist in ' \( name) ' enum. " ,
1048
+ nodes: [ valueAST]
1049
+ )
1050
+ }
1051
+ return enumValue. value
1032
1052
}
1033
1053
}
1034
1054
You can’t perform that action at this time.
0 commit comments