Skip to content

Commit ff92fd2

Browse files
fix: Adds 'get' support to definition node types
1 parent 5f4c6c0 commit ff92fd2

File tree

1 file changed

+204
-0
lines changed

1 file changed

+204
-0
lines changed

Sources/GraphQL/Language/AST.swift

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1739,6 +1739,19 @@ public final class SchemaDefinition {
17391739
self.directives = directives
17401740
self.operationTypes = operationTypes
17411741
}
1742+
1743+
public func get(key: String) -> NodeResult? {
1744+
switch key {
1745+
case "description":
1746+
return description.map { .node($0) }
1747+
case "directives":
1748+
return .array(directives)
1749+
case "operationTypes":
1750+
return .array(operationTypes)
1751+
default:
1752+
return nil
1753+
}
1754+
}
17421755
}
17431756

17441757
extension SchemaDefinition: Equatable {
@@ -1760,6 +1773,15 @@ public final class OperationTypeDefinition {
17601773
self.operation = operation
17611774
self.type = type
17621775
}
1776+
1777+
public func get(key: String) -> NodeResult? {
1778+
switch key {
1779+
case "type":
1780+
return .node(type)
1781+
default:
1782+
return nil
1783+
}
1784+
}
17631785
}
17641786

17651787
extension OperationTypeDefinition: Equatable {
@@ -1831,6 +1853,19 @@ public final class ScalarTypeDefinition {
18311853
self.name = name
18321854
self.directives = directives
18331855
}
1856+
1857+
public func get(key: String) -> NodeResult? {
1858+
switch key {
1859+
case "description":
1860+
return description.map { .node($0) }
1861+
case "name":
1862+
return .node(name)
1863+
case "directives":
1864+
return .array(directives)
1865+
default:
1866+
return nil
1867+
}
1868+
}
18341869
}
18351870

18361871
extension ScalarTypeDefinition: Equatable {
@@ -1865,6 +1900,23 @@ public final class ObjectTypeDefinition {
18651900
self.directives = directives
18661901
self.fields = fields
18671902
}
1903+
1904+
public func get(key: String) -> NodeResult? {
1905+
switch key {
1906+
case "description":
1907+
return description.map { .node($0) }
1908+
case "name":
1909+
return .node(name)
1910+
case "interfaces":
1911+
return .array(interfaces)
1912+
case "directives":
1913+
return .array(directives)
1914+
case "fields":
1915+
return .array(fields)
1916+
default:
1917+
return nil
1918+
}
1919+
}
18681920
}
18691921

18701922
extension ObjectTypeDefinition: Equatable {
@@ -1901,6 +1953,23 @@ public final class FieldDefinition {
19011953
self.type = type
19021954
self.directives = directives
19031955
}
1956+
1957+
public func get(key: String) -> NodeResult? {
1958+
switch key {
1959+
case "description":
1960+
return description.map { .node($0) }
1961+
case "name":
1962+
return .node(name)
1963+
case "arguments":
1964+
return .array(arguments)
1965+
case "type":
1966+
return .node(type)
1967+
case "directives":
1968+
return .array(directives)
1969+
default:
1970+
return nil
1971+
}
1972+
}
19041973
}
19051974

19061975
extension FieldDefinition: Equatable {
@@ -1937,6 +2006,23 @@ public final class InputValueDefinition {
19372006
self.defaultValue = defaultValue
19382007
self.directives = directives
19392008
}
2009+
2010+
public func get(key: String) -> NodeResult? {
2011+
switch key {
2012+
case "description":
2013+
return description.map { .node($0) }
2014+
case "name":
2015+
return .node(name)
2016+
case "type":
2017+
return .node(type)
2018+
case "defaultValue":
2019+
return defaultValue.map { .node($0) }
2020+
case "directives":
2021+
return .array(directives)
2022+
default:
2023+
return nil
2024+
}
2025+
}
19402026
}
19412027

19422028
extension InputValueDefinition: Equatable {
@@ -1989,6 +2075,23 @@ public final class InterfaceTypeDefinition {
19892075
self.directives = directives
19902076
self.fields = fields
19912077
}
2078+
2079+
public func get(key: String) -> NodeResult? {
2080+
switch key {
2081+
case "description":
2082+
return description.map { .node($0) }
2083+
case "name":
2084+
return .node(name)
2085+
case "interfaces":
2086+
return .array(interfaces)
2087+
case "directives":
2088+
return .array(directives)
2089+
case "fields":
2090+
return .array(fields)
2091+
default:
2092+
return nil
2093+
}
2094+
}
19922095
}
19932096

19942097
extension InterfaceTypeDefinition: Equatable {
@@ -2021,6 +2124,21 @@ public final class UnionTypeDefinition {
20212124
self.directives = directives
20222125
self.types = types
20232126
}
2127+
2128+
public func get(key: String) -> NodeResult? {
2129+
switch key {
2130+
case "description":
2131+
return description.map { .node($0) }
2132+
case "name":
2133+
return .node(name)
2134+
case "directives":
2135+
return .array(directives)
2136+
case "types":
2137+
return .array(types)
2138+
default:
2139+
return nil
2140+
}
2141+
}
20242142
}
20252143

20262144
extension UnionTypeDefinition: Equatable {
@@ -2053,6 +2171,21 @@ public final class EnumTypeDefinition {
20532171
self.directives = directives
20542172
self.values = values
20552173
}
2174+
2175+
public func get(key: String) -> NodeResult? {
2176+
switch key {
2177+
case "description":
2178+
return description.map { .node($0) }
2179+
case "name":
2180+
return .node(name)
2181+
case "directives":
2182+
return .array(directives)
2183+
case "values":
2184+
return .array(values)
2185+
default:
2186+
return nil
2187+
}
2188+
}
20562189
}
20572190

20582191
extension EnumTypeDefinition: Equatable {
@@ -2082,6 +2215,19 @@ public final class EnumValueDefinition {
20822215
self.name = name
20832216
self.directives = directives
20842217
}
2218+
2219+
public func get(key: String) -> NodeResult? {
2220+
switch key {
2221+
case "description":
2222+
return description.map { .node($0) }
2223+
case "name":
2224+
return .node(name)
2225+
case "directives":
2226+
return .array(directives)
2227+
default:
2228+
return nil
2229+
}
2230+
}
20852231
}
20862232

20872233
extension EnumValueDefinition: Equatable {
@@ -2113,6 +2259,21 @@ public final class InputObjectTypeDefinition {
21132259
self.directives = directives
21142260
self.fields = fields
21152261
}
2262+
2263+
public func get(key: String) -> NodeResult? {
2264+
switch key {
2265+
case "description":
2266+
return description.map { .node($0) }
2267+
case "name":
2268+
return .node(name)
2269+
case "directives":
2270+
return .array(directives)
2271+
case "fields":
2272+
return .array(fields)
2273+
default:
2274+
return nil
2275+
}
2276+
}
21162277
}
21172278

21182279
extension InputObjectTypeDefinition: Equatable {
@@ -2133,6 +2294,10 @@ public final class TypeExtensionDefinition {
21332294
self.loc = loc
21342295
self.definition = definition
21352296
}
2297+
2298+
public func get(key: String) -> NodeResult? {
2299+
definition.get(key: key)
2300+
}
21362301
}
21372302

21382303
extension TypeExtensionDefinition: Equatable {
@@ -2150,6 +2315,10 @@ public final class SchemaExtensionDefinition {
21502315
self.loc = loc
21512316
self.definition = definition
21522317
}
2318+
2319+
public func get(key: String) -> NodeResult? {
2320+
definition.get(key: key)
2321+
}
21532322
}
21542323

21552324
extension SchemaExtensionDefinition: Equatable {
@@ -2167,6 +2336,10 @@ public final class InterfaceExtensionDefinition {
21672336
self.loc = loc
21682337
self.definition = definition
21692338
}
2339+
2340+
public func get(key: String) -> NodeResult? {
2341+
definition.get(key: key)
2342+
}
21702343
}
21712344

21722345
extension InterfaceExtensionDefinition: Equatable {
@@ -2189,6 +2362,10 @@ public final class ScalarExtensionDefinition {
21892362
self.definition = definition
21902363
self.directives = directives
21912364
}
2365+
2366+
public func get(key: String) -> NodeResult? {
2367+
definition.get(key: key)
2368+
}
21922369
}
21932370

21942371
extension ScalarExtensionDefinition: Equatable {
@@ -2206,6 +2383,10 @@ public final class UnionExtensionDefinition {
22062383
self.loc = loc
22072384
self.definition = definition
22082385
}
2386+
2387+
public func get(key: String) -> NodeResult? {
2388+
definition.get(key: key)
2389+
}
22092390
}
22102391

22112392
extension UnionExtensionDefinition: Equatable {
@@ -2223,6 +2404,10 @@ public final class EnumExtensionDefinition {
22232404
self.loc = loc
22242405
self.definition = definition
22252406
}
2407+
2408+
public func get(key: String) -> NodeResult? {
2409+
definition.get(key: key)
2410+
}
22262411
}
22272412

22282413
extension EnumExtensionDefinition: Equatable {
@@ -2240,6 +2425,10 @@ public final class InputObjectExtensionDefinition {
22402425
self.loc = loc
22412426
self.definition = definition
22422427
}
2428+
2429+
public func get(key: String) -> NodeResult? {
2430+
definition.get(key: key)
2431+
}
22432432
}
22442433

22452434
extension InputObjectExtensionDefinition: Equatable {
@@ -2275,6 +2464,21 @@ public final class DirectiveDefinition {
22752464
self.locations = locations
22762465
self.repeatable = repeatable
22772466
}
2467+
2468+
public func get(key: String) -> NodeResult? {
2469+
switch key {
2470+
case "description":
2471+
return description.map { .node($0) }
2472+
case "name":
2473+
return .node(name)
2474+
case "arguments":
2475+
return .array(arguments)
2476+
case "locations":
2477+
return .array(locations)
2478+
default:
2479+
return nil
2480+
}
2481+
}
22782482
}
22792483

22802484
extension DirectiveDefinition: Equatable {

0 commit comments

Comments
 (0)