Skip to content

Commit ee68012

Browse files
Merge pull request #788 from appwrite/fix-dotnet-property-collisions
Fix dotnet model collisions
2 parents e61118f + 83c0071 commit ee68012

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

src/SDK/Language/DotNet.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,15 @@ public function getIdentifierOverrides(): array
145145
];
146146
}
147147

148+
public function getPropertyOverrides(): array
149+
{
150+
return [
151+
'provider' => [
152+
'Provider' => 'MessagingProvider',
153+
],
154+
];
155+
}
156+
148157
/**
149158
* @param array $parameter
150159
* @return string
@@ -428,6 +437,12 @@ public function getFilters(): array
428437
new TwigFilter('caseEnumKey', function (string $value) {
429438
return $this->toPascalCase($value);
430439
}),
440+
new TwigFilter('overrideProperty', function (string $property, string $class) {
441+
if (isset($this->getPropertyOverrides()[$class][$property])) {
442+
return $this->getPropertyOverrides()[$class][$property];
443+
}
444+
return $property;
445+
}),
431446
];
432447
}
433448
}

templates/dotnet/src/Appwrite/Converters/ValueClassConverter.cs.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ namespace {{ spec.title | caseUcfirst }}.Converters
66
{
77
public class ValueClassConverter : JsonConverter {
88

9-
public override bool CanConvert(Type objectType)
9+
public override bool CanConvert(System.Type objectType)
1010
{
1111
return typeof(IEnum).IsAssignableFrom(objectType);
1212
}
1313

14-
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
14+
public override object ReadJson(JsonReader reader, System.Type objectType, object existingValue, JsonSerializer serializer)
1515
{
1616
var value = (string)reader.Value;
1717
var constructor = objectType.GetConstructor(new[] { typeof(string) });

templates/dotnet/src/Appwrite/Models/Model.cs.twig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% macro sub_schema(property) %}{% if property.sub_schema %}{% if property.type == 'array' %}List<{{property.sub_schema | caseUcfirst | overrideIdentifier}}>{% else %}{{property.sub_schema | caseUcfirst | overrideIdentifier}}{% endif %}{% else %}{{property | typeName}}{% endif %}{% if not property.required %}?{% endif %}{% endmacro %}
2-
{% macro property_name(definition, property) %}{{ property.name | caseUcfirst | removeDollarSign | escapeKeyword}}{% endmacro %}
2+
{% macro property_name(definition, property) %}{{ property.name | caseUcfirst | removeDollarSign | escapeKeyword }}{% endmacro %}
33

44
using System;
55
using System.Linq;
@@ -14,7 +14,7 @@ namespace {{ spec.title | caseUcfirst }}.Models
1414
{
1515
{%~ for property in definition.properties %}
1616
[JsonProperty("{{ property.name }}")]
17-
public {{ _self.sub_schema(property) }} {{ _self.property_name(definition, property) }} { get; private set; }
17+
public {{ _self.sub_schema(property) }} {{ _self.property_name(definition, property) | overrideProperty(definition.name) }} { get; private set; }
1818

1919
{%~ endfor %}
2020
{%~ if definition.additionalProperties %}
@@ -31,7 +31,7 @@ namespace {{ spec.title | caseUcfirst }}.Models
3131
{%~ endif %}
3232
) {
3333
{%~ for property in definition.properties %}
34-
{{ _self.property_name(definition, property) }} = {{ property.name | caseCamel | escapeKeyword }};
34+
{{ _self.property_name(definition, property) | overrideProperty(definition.name) }} = {{ property.name | caseCamel | escapeKeyword }};
3535
{%~ endfor %}
3636
{%~ if definition.additionalProperties %}
3737
Data = data;
@@ -51,7 +51,7 @@ namespace {{ spec.title | caseUcfirst }}.Models
5151
public Dictionary<string, object?> ToMap() => new Dictionary<string, object?>()
5252
{
5353
{%~ for property in definition.properties %}
54-
{ "{{ property.name }}", {% if property.sub_schema %}{% if property.type == 'array' %}{{ _self.property_name(definition, property) }}.Select(it => it.ToMap()){% else %}{{ _self.property_name(definition, property) }}.ToMap(){% endif %}{% else %}{{ _self.property_name(definition, property) }}{% endif %}{{ ' }' }}{% if not loop.last or (loop.last and definition.additionalProperties) %},{% endif %}
54+
{ "{{ property.name }}", {% if property.sub_schema %}{% if property.type == 'array' %}{{ _self.property_name(definition, property) | overrideProperty(definition.name) }}.Select(it => it.ToMap()){% else %}{{ _self.property_name(definition, property) | overrideProperty(definition.name) }}.ToMap(){% endif %}{% else %}{{ _self.property_name(definition, property) | overrideProperty(definition.name) }}{% endif %}{{ ' }' }}{% if not loop.last or (loop.last and definition.additionalProperties) %},{% endif %}
5555

5656
{%~ endfor %}
5757
{%~ if definition.additionalProperties %}

0 commit comments

Comments
 (0)