import SwiftGraphQL
enum Planet: String {
case earth
}
// Define a Swift model.
struct Human: Identifiable {
let id: String
let name: String
let planet: Planet?
}
// Create a selection.
let human = Selection.Human<Human> {
// Query
let id: String = try $0.id()
let name: String = try $0.name()
let rawPlanet = try $0.planet()
// Decode
guard let homePlanet = Planet(rawValue: rawPlanet) else {
throw "Invalid planet value"
}
return Human(id: id, name: name, homePlanet: homePlanet)
}
let query = Selection.Query<[Human]> {
try $0.friends(selection: human.list)
}
// Perform a request.
let url = URL(string: "http://localhost:8080/graphql")!
let request = URLRequest(url: url).querying(query)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let result = try? data?.decode(query) else {
print("something went wrong")
}
print(result)
}
task.resume()