Skip to content

Commit 9e678b7

Browse files
committed
Remove all instances of unset
Change {field name}Seen => serialize{field name} Expose serialize{field name} publicly
1 parent 984b90b commit 9e678b7

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

codegen/lib/graphql_swift_gen/templates/type.swift.erb

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -221,20 +221,11 @@ extension <%= schema_name %> {
221221

222222
open var <%= escape_reserved_word(field.camelize_name) %>: <%= swift_input_type(field.type) %> {
223223
didSet {
224-
<%= escape_reserved_word(field.camelize_name) %>Seen = true
224+
serialize<%= escape_reserved_word(field.classify_name) %> = true
225225
}
226226
}
227-
228-
// Observes if the <%= escape_reserved_word(field.camelize_name) %> property was set.
229-
private var <%= escape_reserved_word(field.camelize_name) %>Seen: Bool = false
230-
231-
// Unsets the <%= escape_reserved_word(field.camelize_name) %> property so that it is not serialized.
232-
@discardableresult
233-
open func unset<%= escape_reserved_word(field.classify_name) %>() -> <%= type.name %> {
234-
<%= escape_reserved_word(field.camelize_name) %> = nil
235-
<%= escape_reserved_word(field.camelize_name) %>Seen = false
236-
return self
237-
}
227+
// Observes if the <%= escape_reserved_word(field.camelize_name) %> property was set, and indicates whether it should be serialized.
228+
open var serialize<%= escape_reserved_word(field.classify_name) %>: Bool
238229
<% end %>
239230

240231
public init(
@@ -244,18 +235,20 @@ extension <%= schema_name %> {
244235
<% if field.type.non_null? %>
245236
<%= escape_reserved_word(field.camelize_name) %>: <%= swift_input_type(field.type, non_null: true) %><%= seperator %>
246237
<% else %>
247-
<%= escape_reserved_word(field.camelize_name) %>: <%= swift_input_type(field.type) %> = nil<%= seperator %>
238+
<%= escape_reserved_word(field.camelize_name) %>: <%= swift_input_type(field.type) %> = nil,
239+
serialize<%= escape_reserved_word(field.classify_name) %>: Bool = false<%= seperator %>
248240
<% end %>
249241
<% end %>
250242
) {
251243
<% type.required_input_fields.each do |field| %>
252244
self.<%= escape_reserved_word(field.camelize_name) %> = <%= escape_reserved_word(field.camelize_name) %>
253245
<% end %>
254246
<% type.optional_input_fields.each do |field| %>
247+
self.serialize<%= escape_reserved_word(field.classify_name) %> = serialize<%= escape_reserved_word(field.classify_name) %>
255248
<% field_name = escape_reserved_word(field.camelize_name) %>
256249
if let <%= field_name %> = <%= field_name %> {
257-
self.<%= field_name %>Seen = true
258250
self.<%= field_name %> = <%= field_name %>
251+
self.serialize<%= escape_reserved_word(field.classify_name) %> = true
259252
}
260253
<% end %>
261254
}
@@ -266,7 +259,7 @@ extension <%= schema_name %> {
266259
fields.append("<%= field.name %>:<%= generate_build_input_code(field.camelize_name, field.type.unwrap_non_null) %>")
267260
<% end %>
268261
<% type.optional_input_fields.each do |field| %>
269-
if <%= escape_reserved_word(field.camelize_name) %>Seen {
262+
if serialize<%= escape_reserved_word(field.classify_name) %> {
270263
if let <%= escape_reserved_word(field.camelize_name) %> = <%= escape_reserved_word(field.camelize_name) %> {
271264
fields.append("<%= field.name %>:<%= generate_build_input_code(field.camelize_name, field.type.unwrap_non_null) %>")
272265
} else {

support/Tests/GraphQLSupportTests/IntegrationTests.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,22 @@ class IntegrationTests: XCTestCase {
6868
XCTAssertEqual(queryString, "mutation{set_integer(input:{key:\"answer\",value:42,negate:true})}")
6969
}
7070

71-
func testInputObjectExplictNilConstructor() {
71+
func testInputObjectOptionalFieldNilConstructor() {
7272
let query = Generated.buildMutation { $0
7373
.setInteger(input: Generated.SetIntegerInput(key: "answer", value: 42, negate: nil))
7474
}
7575
let queryString = String(describing: query)
7676
XCTAssertEqual(queryString, "mutation{set_integer(input:{key:\"answer\",value:42})}")
7777
}
7878

79+
func testInputObjectOptionalFieldExplictNilConstructor() {
80+
let query = Generated.buildMutation { $0
81+
.setInteger(input: Generated.SetIntegerInput(key: "answer", value: 42, negate: nil, serializeNegate: true))
82+
}
83+
let queryString = String(describing: query)
84+
XCTAssertEqual(queryString, "mutation{set_integer(input:{key:\"answer\",value:42,negate:null})}")
85+
}
86+
7987
func testInputObjectExplictNilSetLater() {
8088
let input = Generated.SetIntegerInput(key: "answer", value: 42)
8189
input.negate = nil

0 commit comments

Comments
 (0)