Files
openapi-generator/modules/swagger-codegen/src/main/resources/nancyfx/model.mustache
Marcin Stefaniuk e1df89c8fa Formatting fix.
2016-05-31 13:49:45 +02:00

170 lines
5.1 KiB
Plaintext

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Sharpility.Extensions;
using NodaTime;
{{#imports}}using {{import}};
{{/imports}}
{{#models}}
{{#model}}
namespace {{packageName}}.{{packageContext}}.Models
{ {{#vars}}{{#isEnum}}
{{>innerModelEnum}}{{/isEnum}}{{#items.isEnum}}
{{#items}}{{>innerModelEnum}}{{/items}}{{/items.isEnum}}{{/vars}}
/// <summary>
/// {{#description}}{{.}}{{/description}}{{^description}}{{classname}}{{/description}}
/// </summary>
public sealed class {{classname}}: {{#parent}}{{{parent}}}, {{/parent}} IEquatable<{{classname}}>
{ {{#vars}}
/// <summary>
/// {{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}}
/// </summary>
public {{>nullableDataType}} {{name}} { get; private set; }
{{/vars}}
/// <summary>
/// Empty constructor required by some serializers.
/// Use {{classname}}.Builder() for instance creation instead.
/// </summary>
[Obsolete]
public {{classname}}() {}
private {{classname}}({{#vars}}{{>nullableDataType}} {{name}}{{#hasMore}}, {{/hasMore}}{{/vars}})
{
{{#vars}}
this.{{name}} = {{name}};
{{/vars}}
}
/// <summary>
/// Returns builder of {{classname}}.
/// </summary>
/// <returns>{{classname}}Builder</returns>
public static {{classname}}Builder Builder()
{
return new {{classname}}Builder();
}
/// <summary>
/// Returns {{classname}}Builder with properties set.
/// Use it to change properties.
/// </summary>
/// <returns>{{classname}}Builder</returns>
public {{classname}}Builder With()
{
return Builder()
{{#vars}}
.{{name}}({{name}}){{#hasMore}}
{{/hasMore}}{{/vars}};
}
public override string ToString()
{
return this.PropertiesToString();
}
public override bool Equals(object obj)
{
return this.EqualsByProperties(obj);
}
public bool Equals({{classname}} other)
{
return Equals((object) other);
}
public override int GetHashCode()
{
return this.PropertiesHash();
}
/// <summary>
/// Implementation of == operator for ({{classname}}.
/// </summary>
/// <param name="left">Compared ({{classname}}</param>
/// <param name="right">Compared ({{classname}}</param>
/// <returns>true if compared items are equals, false otherwise</returns>
public static bool operator == ({{classname}} left, {{classname}} right)
{
return Equals(left, right);
}
/// <summary>
/// Implementation of != operator for ({{classname}}.
/// </summary>
/// <param name="left">Compared ({{classname}}</param>
/// <param name="right">Compared ({{classname}}</param>
/// <returns>true if compared items are not equals, false otherwise</returns>
public static bool operator != ({{classname}} left, {{classname}} right)
{
return !Equals(left, right);
}
/// <summary>
/// Builder of {{classname}}.
/// </summary>
public sealed class {{classname}}Builder
{
{{#vars}}
private {{>nullableDataType}} _{{name}};
{{/vars}}
internal {{classname}}Builder()
{
SetupDefaults();
}
private void SetupDefaults()
{
{{#vars}}
{{^required}}
{{#defaultValue}}
_{{name}} = {{{defaultValue}}};
{{/defaultValue}}
{{/required}}
{{/vars}}
}
{{#vars}}
/// <summary>
/// Sets value for {{classname}}.{{{name}}} property.
/// </summary>
/// <param name="value">{{^description}}{{{name}}}{{/description}}{{#description}}{{description}}{{/description}}</param>
public {{classname}}Builder {{name}}({{>nullableDataType}} value)
{
_{{name}} = value;
return this;
}
{{/vars}}
/// <summary>
/// Builds instance of {{classname}}.
/// </summary>
/// <returns>{{classname}}</returns>
public {{classname}} Build()
{
Validate();
return new {{classname}}(
{{#vars}}
{{name}}: _{{name}}{{#hasMore}},{{/hasMore}}
{{/vars}}
);
}
private void Validate()
{ {{#vars}}{{#required}}
if (_{{name}} == null)
{
throw new ArgumentException("{{name}} is a required property for {{classname}} and cannot be null");
} {{/required}}{{/vars}}
}
}
}
{{/model}}
{{/models}}
}