Skip to content

Commit 96fb99c

Browse files
1 parent c0c9664 commit 96fb99c

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

Sources/GraphQL/Type/Definition.swift

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,23 +1012,43 @@ public final class GraphQLEnumType {
10121012
}
10131013

10141014
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)
10161022
}
10171023

10181024
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+
)
10211029
}
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
10241036
}
10251037

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+
)
10291044
}
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
10321052
}
10331053
}
10341054

0 commit comments

Comments
 (0)