mirror of
https://github.com/jlengrand/openapi-generator.git
synced 2026-03-10 08:31:23 +00:00
* Add validation sample * Add validation template * Add access control * Add rule property for string for numeric * Add access control * Remove useless file * Fix condition * Add properies for test * Rename * Add additional property * Run ./bin/utils/export_docs_generators.sh * Add comments for validator * Rename * Run ./bin/generate-samples.sh bin/configs/swift*
135 lines
9.3 KiB
Plaintext
Vendored
135 lines
9.3 KiB
Plaintext
Vendored
{{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#useClasses}}final class{{/useClasses}}{{^useClasses}}struct{{/useClasses}} {{{classname}}}: {{#useVapor}}Content{{/useVapor}}{{^useVapor}}Codable{{#useJsonEncodable}}, JSONEncodable{{/useJsonEncodable}}{{/useVapor}}{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
|
|
{{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable{{#useJsonEncodable}}, JSONEncodable{{/useJsonEncodable}} {
|
|
{{/objcCompatible}}
|
|
|
|
{{#allVars}}
|
|
{{#isEnum}}
|
|
{{> modelInlineEnumDeclaration}}
|
|
{{/isEnum}}
|
|
{{/allVars}}
|
|
{{#allVars}}
|
|
{{#validatable}}
|
|
{{#hasValidation}}
|
|
{{#isString}}
|
|
static let {{{name}}}Rule = StringRule(minLength: {{#minLength}}{{{.}}}{{/minLength}}{{^minLength}}nil{{/minLength}}, maxLength: {{#maxLength}}{{{.}}}{{/maxLength}}{{^maxLength}}nil{{/maxLength}}, pattern: {{#pattern}}"{{{.}}}"{{/pattern}}{{^pattern}}nil{{/pattern}})
|
|
{{/isString}}
|
|
{{#isNumeric}}
|
|
static let {{{name}}}Rule = NumericRule<{{{dataType}}}>(minimum: {{#minimum}}{{{.}}}{{/minimum}}{{^minimum}}nil{{/minimum}}, exclusiveMinimum: {{#exclusiveMinimum}}true{{/exclusiveMinimum}}{{^exclusiveMinimum}}false{{/exclusiveMinimum}}, maximum: {{#maximum}}{{{.}}}{{/maximum}}{{^maximum}}nil{{/maximum}}, exclusiveMaximum: {{#exclusiveMaximum}}true{{/exclusiveMaximum}}{{^exclusiveMaximum}}false{{/exclusiveMaximum}}, multipleOf: {{#multipleOf}}{{{.}}}{{/multipleOf}}{{^multipleOf}}nil{{/multipleOf}})
|
|
{{/isNumeric}}
|
|
{{/hasValidation}}
|
|
{{/validatable}}
|
|
{{/allVars}}
|
|
{{#allVars}}
|
|
{{#isEnum}}
|
|
{{#description}}/** {{{.}}} */
|
|
{{/description}}{{#deprecated}}@available(*, deprecated, message: "This property is deprecated.")
|
|
{{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{{name}}}: {{#vendorExtensions.x-null-encodable}}NullEncodable<{{{datatypeWithEnum}}}>{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}{{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{/vendorExtensions.x-null-encodable}}{{#defaultValue}} = {{#vendorExtensions.x-null-encodable}}{{{vendorExtensions.x-null-encodable-default-value}}}{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}{{{.}}}{{/vendorExtensions.x-null-encodable}}{{/defaultValue}}
|
|
{{/isEnum}}
|
|
{{^isEnum}}
|
|
{{#description}}/** {{{.}}} */
|
|
{{/description}}{{#deprecated}}@available(*, deprecated, message: "This property is deprecated.")
|
|
{{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{{name}}}: {{#vendorExtensions.x-null-encodable}}NullEncodable<{{{datatype}}}>{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}{{{datatype}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{/vendorExtensions.x-null-encodable}}{{#defaultValue}} = {{#vendorExtensions.x-null-encodable}}{{{vendorExtensions.x-null-encodable-default-value}}}{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}{{{.}}}{{/vendorExtensions.x-null-encodable}}{{/defaultValue}}
|
|
{{#objcCompatible}}
|
|
{{#vendorExtensions.x-swift-optional-scalar}}
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var {{{name}}}Num: NSNumber? {
|
|
get {
|
|
{{^vendorExtensions.x-null-encodable}}
|
|
return {{{name}}} as NSNumber?
|
|
{{/vendorExtensions.x-null-encodable}}
|
|
{{#vendorExtensions.x-null-encodable}}
|
|
if case .encodeValue(let value) = {{name}} {
|
|
return value as NSNumber?
|
|
} else {
|
|
return nil
|
|
}
|
|
{{/vendorExtensions.x-null-encodable}}
|
|
}
|
|
}
|
|
{{/vendorExtensions.x-swift-optional-scalar}}
|
|
{{/objcCompatible}}
|
|
{{/isEnum}}
|
|
{{/allVars}}
|
|
{{#hasVars}}
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init({{#allVars}}{{{name}}}: {{#vendorExtensions.x-null-encodable}}NullEncodable<{{{datatypeWithEnum}}}>{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}{{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{/vendorExtensions.x-null-encodable}}{{#defaultValue}} = {{#vendorExtensions.x-null-encodable}}{{{vendorExtensions.x-null-encodable-default-value}}}{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}{{{.}}}{{/vendorExtensions.x-null-encodable}}{{/defaultValue}}{{^defaultValue}}{{^required}} = {{#vendorExtensions.x-null-encodable}}.encodeNull{{/vendorExtensions.x-null-encodable}}{{^vendorExtensions.x-null-encodable}}nil{{/vendorExtensions.x-null-encodable}}{{/required}}{{/defaultValue}}{{^-last}}, {{/-last}}{{/allVars}}) {
|
|
{{#allVars}}
|
|
self.{{{name}}} = {{{name}}}
|
|
{{/allVars}}
|
|
}
|
|
{{/hasVars}}
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum CodingKeys: {{#hasVars}}String, {{/hasVars}}CodingKey, CaseIterable {
|
|
{{#allVars}}
|
|
case {{{name}}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}}
|
|
{{/allVars}}
|
|
}{{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var additionalProperties: [String: {{{additionalPropertiesType}}}] = [:]
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} subscript(key: String) -> {{{additionalPropertiesType}}}? {
|
|
get {
|
|
if let value = additionalProperties[key] {
|
|
return value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
set {
|
|
additionalProperties[key] = newValue
|
|
}
|
|
}{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}
|
|
|
|
// Encodable protocol methods
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
{{#allVars}}
|
|
{{#vendorExtensions.x-null-encodable}}
|
|
switch {{{name}}} {
|
|
case .encodeNothing: break
|
|
case .encodeNull, .encodeValue: try container.encode({{{name}}}, forKey: .{{{name}}})
|
|
}
|
|
{{/vendorExtensions.x-null-encodable}}
|
|
{{^vendorExtensions.x-null-encodable}}
|
|
try container.encode{{^required}}IfPresent{{/required}}({{{name}}}, forKey: .{{{name}}})
|
|
{{/vendorExtensions.x-null-encodable}}
|
|
{{/allVars}}
|
|
{{#generateModelAdditionalProperties}}
|
|
{{#additionalPropertiesType}}
|
|
var additionalPropertiesContainer = encoder.container(keyedBy: String.self)
|
|
try additionalPropertiesContainer.encodeMap(additionalProperties)
|
|
{{/additionalPropertiesType}}
|
|
{{/generateModelAdditionalProperties}}
|
|
}{{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}
|
|
|
|
// Decodable protocol methods
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}}{{#objcCompatible}} required{{/objcCompatible}} init(from decoder: Decoder) throws {
|
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
|
|
{{#allVars}}
|
|
{{{name}}} = try container.decode{{#required}}{{#isNullable}}IfPresent{{/isNullable}}{{/required}}{{^required}}IfPresent{{/required}}({{{datatypeWithEnum}}}.self, forKey: .{{{name}}})
|
|
{{/allVars}}
|
|
var nonAdditionalPropertyKeys = Set<String>()
|
|
{{#allVars}}
|
|
nonAdditionalPropertyKeys.insert("{{{baseName}}}")
|
|
{{/allVars}}
|
|
let additionalPropertiesContainer = try decoder.container(keyedBy: String.self)
|
|
additionalProperties = try additionalPropertiesContainer.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys)
|
|
}{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}{{^objcCompatible}}{{#useClasses}}{{#vendorExtensions.x-swift-hashable}}
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func == (lhs: {{classname}}, rhs: {{classname}}) -> Bool {
|
|
{{#allVars}}
|
|
lhs.{{{name}}} == rhs.{{{name}}}{{^-last}} &&{{/-last}}
|
|
{{/allVars}}
|
|
{{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}{{#hasVars}}&& {{/hasVars}}lhs.additionalProperties == rhs.additionalProperties{{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}
|
|
}
|
|
|
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func hash(into hasher: inout Hasher) {
|
|
{{#allVars}}
|
|
hasher.combine({{{name}}}{{^vendorExtensions.x-null-encodable}}{{^required}}?{{/required}}{{/vendorExtensions.x-null-encodable}}.hashValue)
|
|
{{/allVars}}
|
|
{{#generateModelAdditionalProperties}}{{#additionalPropertiesType}}hasher.combine(additionalProperties.hashValue){{/additionalPropertiesType}}{{/generateModelAdditionalProperties}}
|
|
}{{/vendorExtensions.x-swift-hashable}}{{/useClasses}}{{/objcCompatible}}
|
|
}
|