Skip to content

Commit bd2fbee

Browse files
committed
[Swift6] Remove QueryStringEncodable for models
1 parent 28daa68 commit bd2fbee

501 files changed

Lines changed: 759 additions & 1779 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/generators/swift6.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
5656
|useBacktickEscapes|Escape reserved words using backticks (default: false)| |false|
5757
|useClasses|Use final classes for models instead of structs (default: false)| |false|
5858
|useCustomDateWithoutTime|Uses a custom type to decode and encode dates without time information to support OpenAPIs date format (default: false)| |false|
59-
|useJsonEncodable|Make models conform to JSONEncodable protocol (default: true)| |true|
6059
|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: true).| |null|
6160
|validatable|Make validation rules and validator for model properties (default: true)| |true|
6261

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ public class Swift6ClientCodegen extends DefaultCodegen implements CodegenConfig
7272
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES = "generateModelAdditionalProperties";
7373
public static final String HASHABLE_MODELS = "hashableModels";
7474
public static final String IDENTIFIABLE_MODELS = "identifiableModels";
75-
public static final String USE_JSON_ENCODABLE = "useJsonEncodable";
7675
public static final String MAP_FILE_BINARY_TO_DATA = "mapFileBinaryToData";
7776
public static final String USE_CUSTOM_DATE_WITHOUT_TIME = "useCustomDateWithoutTime";
7877
public static final String VALIDATABLE = "validatable";
@@ -114,8 +113,6 @@ public class Swift6ClientCodegen extends DefaultCodegen implements CodegenConfig
114113
protected boolean hashableModels = true;
115114
@Setter
116115
protected boolean identifiableModels = true;
117-
@Setter
118-
protected boolean useJsonEncodable = true;
119116
@Getter
120117
@Setter
121118
protected boolean mapFileBinaryToData = false;
@@ -335,10 +332,6 @@ public Swift6ClientCodegen() {
335332
"Make models conform to Identifiable when an id is present (default: true)")
336333
.defaultValue(Boolean.TRUE.toString()));
337334

338-
cliOptions.add(new CliOption(USE_JSON_ENCODABLE,
339-
"Make models conform to JSONEncodable protocol (default: true)")
340-
.defaultValue(Boolean.TRUE.toString()));
341-
342335
cliOptions.add(new CliOption(MAP_FILE_BINARY_TO_DATA,
343336
"Map File and Binary to Data (default: false)")
344337
.defaultValue(Boolean.FALSE.toString()));
@@ -560,11 +553,6 @@ public void processOpts() {
560553
}
561554
additionalProperties.put(IDENTIFIABLE_MODELS, identifiableModels);
562555

563-
if (additionalProperties.containsKey(USE_JSON_ENCODABLE)) {
564-
setUseJsonEncodable(convertPropertyToBooleanAndWriteBack(USE_JSON_ENCODABLE));
565-
}
566-
additionalProperties.put(USE_JSON_ENCODABLE, useJsonEncodable);
567-
568556
if (additionalProperties.containsKey(MAP_FILE_BINARY_TO_DATA)) {
569557
setMapFileBinaryToData(convertPropertyToBooleanAndWriteBack(MAP_FILE_BINARY_TO_DATA));
570558
}

modules/openapi-generator/src/main/resources/swift6/APIHelper.mustache

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import Foundation{{#useVapor}}
88
import Vapor{{/useVapor}}
99

1010
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct APIHelper {
11-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNil(_ source: [String: (any Sendable)?]) -> [String: any Sendable]? {
12-
let destination = source.reduce(into: [String: any Sendable]()) { result, item in
11+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNil<Key, Value>(_ source: [Key: Value?]) -> [Key: Value]? {
12+
let destination = source.reduce(into: [Key: Value]()) { result, item in
1313
if let value = item.value {
1414
result[item.key] = value
1515
}
@@ -21,7 +21,7 @@ import Vapor{{/useVapor}}
2121
return destination
2222
}
2323

24-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNilHeaders(_ source: [String: (any Sendable)?]) -> [String: String] {
24+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func rejectNilHeaders(_ source: [String: Any?]) -> [String: String] {
2525
return source.reduce(into: [String: String]()) { result, item in
2626
if let collection = item.value as? [Any?] {
2727
result[item.key] = collection
@@ -33,21 +33,6 @@ import Vapor{{/useVapor}}
3333
}
3434
}
3535

36-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func convertBoolToString(_ source: [String: any Sendable]?) -> [String: any Sendable]? {
37-
guard let source = source else {
38-
return nil
39-
}
40-
41-
return source.reduce(into: [String: any Sendable]()) { result, item in
42-
switch item.value {
43-
case let x as Bool:
44-
result[item.key] = x.description
45-
default:
46-
result[item.key] = item.value
47-
}
48-
}
49-
}
50-
5136
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func convertAnyToString(_ value: Any?) -> String? {
5237
guard let value = value else { return nil }
5338
if let value = value as? any RawRepresentable {

modules/openapi-generator/src/main/resources/swift6/Extensions.mustache

Lines changed: 7 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -11,57 +11,14 @@ import FoundationNetworking
1111
@preconcurrency import PromiseKit{{/usePromiseKit}}{{#useVapor}}
1212
import Vapor{{/useVapor}}{{^useVapor}}
1313

14-
extension QueryStringEncodable {
15-
@_disfavoredOverload
16-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
17-
}
18-
19-
extension Bool: QueryStringEncodable {
20-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
21-
}
22-
23-
extension Float: QueryStringEncodable {
24-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
25-
}
26-
27-
extension Int: QueryStringEncodable {
28-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
29-
}
30-
31-
extension Int32: QueryStringEncodable {
32-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
33-
}
34-
35-
extension Int64: QueryStringEncodable {
36-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
37-
}
38-
39-
extension Double: QueryStringEncodable {
40-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
41-
}
42-
43-
extension Decimal: QueryStringEncodable {
44-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
45-
}
46-
47-
extension String: QueryStringEncodable {
48-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
49-
}
50-
51-
extension URL: QueryStringEncodable {
52-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
53-
}
54-
55-
extension UUID: QueryStringEncodable {
56-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: self) }
57-
}
58-
59-
extension RawRepresentable where RawValue: QueryStringEncodable {
60-
func encodeToQueryString(codableHelper: CodableHelper) -> String { String(describing: rawValue) }
14+
extension RawRepresentable where Self: CustomQueryStringEncodable {
15+
func encodeToQueryString(codableHelper: CodableHelper) -> String {
16+
encodeIfPossible(rawValue, codableHelper: codableHelper)
17+
}
6118
}
6219

6320
private func encodeIfPossible<T>(_ object: T, codableHelper: CodableHelper) -> String {
64-
if let encodableObject = object as? QueryStringEncodable {
21+
if let encodableObject = object as? any CustomQueryStringEncodable {
6522
return encodableObject.encodeToQueryString(codableHelper: codableHelper)
6623
} else {
6724
return String(describing: object)
@@ -90,25 +47,16 @@ extension Dictionary {
9047
}
9148
}
9249

93-
extension Data: QueryStringEncodable {
50+
extension Data: CustomQueryStringEncodable {
9451
func encodeToQueryString(codableHelper: CodableHelper) -> String {
9552
return self.base64EncodedString(options: Data.Base64EncodingOptions())
9653
}
9754
}
9855

99-
extension Date: QueryStringEncodable {
56+
extension Date: CustomQueryStringEncodable {
10057
func encodeToQueryString(codableHelper: CodableHelper) -> String {
10158
return codableHelper.dateFormatter.string(from: self)
10259
}
103-
}
104-
105-
extension QueryStringEncodable where Self: Encodable {
106-
func encodeToQueryString(codableHelper: CodableHelper) -> String {
107-
guard let data = try? codableHelper.jsonEncoder.encode(self) else {
108-
fatalError("Could not encode to json: \(self)")
109-
}
110-
return data.encodeToQueryString(codableHelper: codableHelper)
111-
}
11260
}{{/useVapor}}{{#generateModelAdditionalProperties}}
11361

11462
extension String: @retroactive CodingKey {

modules/openapi-generator/src/main/resources/swift6/Models.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import FoundationNetworking
1010
#endif{{#useAlamofire}}
1111
import Alamofire{{/useAlamofire}}
1212

13-
protocol QueryStringEncodable {
13+
protocol CustomQueryStringEncodable {
1414
func encodeToQueryString(codableHelper: CodableHelper) -> String
1515
}
1616

modules/openapi-generator/src/main/resources/swift6/OpenAPIDateWithoutTime.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ import Foundation
7676
}
7777
}
7878

79-
extension OpenAPIDateWithoutTime: QueryStringEncodable {
79+
extension OpenAPIDateWithoutTime: CustomQueryStringEncodable {
8080
func encodeToQueryString(codableHelper: CodableHelper) -> String {
8181
return OpenISO8601DateFormatter.withoutTime.string(from: self.normalizedWrappedDate())
8282
}

modules/openapi-generator/src/main/resources/swift6/api.mustache

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,7 @@ extension {{projectName}}API {
301301
{{/formParams}}
302302
]
303303

304-
let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams)
305-
let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters)
304+
let localVariableParameters = APIHelper.rejectNil(localVariableFormParams)
306305
{{/hasFormParams}}
307306
{{^hasFormParams}}
308307
let localVariableParameters: [String: any Sendable]? = nil

modules/openapi-generator/src/main/resources/swift6/modelEnum.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, Sendable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{^isString}}{{^isInteger}}{{^isFloat}}{{^isDouble}}{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{/isDouble}}{{/isFloat}}{{/isInteger}}{{/isString}}{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{/enumUnknownDefaultCase}} {
1+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{classname}}: {{dataType}}, Sendable, CustomQueryStringEncodable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{/enumUnknownDefaultCase}} {
22
{{#allowableValues}}
33
{{#enumVars}}
44
case {{{name}}} = {{{value}}}

modules/openapi-generator/src/main/resources/swift6/modelInlineEnumDeclaration.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, Sendable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{^isContainer}}{{^isString}}{{^isInteger}}{{^isFloat}}{{^isDouble}}{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{/isDouble}}{{/isFloat}}{{/isInteger}}{{/isString}}{{/isContainer}}{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{#isContainer}}, CaseIterableDefaultsLast{{/isContainer}}{{/enumUnknownDefaultCase}} {
1+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum {{enumName}}: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}String{{/isContainer}}, Sendable, CustomQueryStringEncodable, {{#useVapor}}Content, Hashable{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}, CaseIterable{{#enumUnknownDefaultCase}}{{#isInteger}}, CaseIterableDefaultsLast{{/isInteger}}{{#isFloat}}, CaseIterableDefaultsLast{{/isFloat}}{{#isDouble}}, CaseIterableDefaultsLast{{/isDouble}}{{#isString}}, CaseIterableDefaultsLast{{/isString}}{{#isContainer}}, CaseIterableDefaultsLast{{/isContainer}}{{/enumUnknownDefaultCase}} {
22
{{#allowableValues}}
33
{{#enumVars}}
44
case {{{name}}} = {{{value}}}

modules/openapi-generator/src/main/resources/swift6/modelObject.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{^useClasses}}Sendable, {{/useClasses}}{{#useClasses}}{{#readonlyProperties}}@unchecked Sendable, {{/readonlyProperties}}{{/useClasses}}{{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}}{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
2-
{{/objcCompatible}}{{#objcCompatible}}@objcMembers {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable{{#useJsonEncodable}}, QueryStringEncodable{{/useJsonEncodable}} {
1+
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{^useClasses}}Sendable, {{/useClasses}}{{#useClasses}}{{#readonlyProperties}}@unchecked Sendable, {{/readonlyProperties}}{{/useClasses}}{{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
2+
{{/objcCompatible}}{{#objcCompatible}}@objcMembers {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable {
33
{{/objcCompatible}}
44

55
{{#allVars}}

0 commit comments

Comments
 (0)