1+ {% macro get_generics(definition , spec , output = false , first = false ) %}
2+ {% spaceless %}
3+ {% if first and definition .additionalProperties %}
4+ {{definition .name | caseUcfirst }} extends Models.{{definition .name | caseUcfirst }}
5+ {% endif %}
6+ {% for property in definition .properties %}
7+ {% if spec .definitions [property .sub_schema ].additionalProperties and output %}
8+ {{property .sub_schema | caseUcfirst }} extends Models.{{property .sub_schema | caseUcfirst }}
9+ {% endif %}
10+ {% if spec .definitions [property .sub_schema ] %}
11+ {{_self.get_generics (spec .definitions [property .sub_schema ], spec , true )}}
12+ {% endif %}
13+ {% endfor %}
14+ {% endspaceless %}
15+ {% endmacro %}
16+ {% macro get_generics_return(definition , spec ) %}
17+ {% spaceless %}
18+ {% for property in definition .properties %}
19+ {% if spec .definitions [property .sub_schema ].additionalProperties %}
20+ {{property .sub_schema | caseUcfirst }}
21+ {% endif %}
22+ {% if spec .definitions [property .sub_schema ] %}
23+ {{_self.get_generics_return (spec .definitions [property .sub_schema ], spec )}}
24+ {% endif %}
25+ {% endfor %}
26+ {% endspaceless %}
27+ {% endmacro %}
128import { Service } from '../service.ts';
229import { Payload } from '../client.ts';
330import { AppwriteException } from '../exception.ts';
431import type { Models } from '../models.d.ts'
532
633export class {{ service .name | caseUcfirst }} extends Service {
734{% for method in service .methods %}
8-
35+ {% set generics = _self.get_generics (spec .definitions [method .responseModel ], spec , true , true ) %}
36+ {% set generics_return = _self.get_generics_return (spec .definitions [method .responseModel ], spec ) %}
937 /**
1038 * {{ method .title }}
1139 *
@@ -19,7 +47,7 @@ export class {{ service.name | caseUcfirst }} extends Service {
1947 * @throws {AppwriteException}
2048 * @returns {Promise}
2149 */
22- async {{ method.name | caseCamel }}{% if spec.definitions[method.responseModel].additionalProperties %}<{{method.responseModel | caseUcfirst}} extends Models.{{method.responseModel | caseUcfirst}}>{% endif %}{% for property in spec.definitions[method.responseModel].properties %}{% if spec.definitions[property.sub_schema].additionalProperties %}<{{property.sub_schema | caseUcfirst}} extends Models.{{property.sub_schema | caseUcfirst}}>{% endif %}{% endfor %}({% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %}?{% endif %}: {{ parameter.type | typeName }}{% if not loop.last %}, {% endif %}{% endfor %}): Promise<{% if method.type == 'webAuth' %}Response{% elseif method.type == 'location' %}Response{% else %}{% if method.responseModel and method.responseModel != 'any' %}{% if not spec.definitions[method.responseModel].additionalProperties %}Models.{% endif %}{{method.responseModel | caseUcfirst}}{% for property in spec.definitions[method.responseModel].properties %}{% if spec.definitions[property.sub_schema].additionalProperties %}<{{property.sub_schema | caseUcfirst}}>{% endif %}{% endfor %}{% else %}{}{% endif %}{% endif %}> {
50+ async {{ method .name | caseCamel }}{% if generics %}< {{generics }}>{% endif %}({% for parameter in method .parameters .all %}{{ parameter .name | caseCamel | escapeKeyword }}{% if not parameter .required %}?{% endif %}: {{ parameter .type | typeName }}{% if not loop .last %}, {% endif %}{% endfor %}): Promise< {% if method .type == ' webAuth' %}Response{% elseif method .type == ' location' %}Response{% else %}{% if method .responseModel and method .responseModel != ' any' %}{% if not spec .definitions [method .responseModel ].additionalProperties %}Models.{% endif %}{{method .responseModel | caseUcfirst }}{% if generics_return %}< {{generics_return }}>{% endif %}{% else %}Response{% endif %}{% endif %}> {
2351{% for parameter in method .parameters .all %}
2452{% if parameter .required %}
2553 if (typeof {{ parameter .name | caseCamel | escapeKeyword }} === 'undefined') {
@@ -45,12 +73,12 @@ export class {{ service.name | caseUcfirst }} extends Service {
4573{% endfor %}
4674 return await this.client.call('{{ method .method | caseLower }}', path, {
4775{% for parameter in method .parameters .header %}
48- '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
76+ '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
4977{% endfor %}
5078{% for key , header in method .headers %}
51- '{{ key }}': '{{ header }}',
79+ '{{ key }}': '{{ header }}',
5280{% endfor %}
53- }, payload);
81+ }, payload);
5482 }
5583{% endfor %}
5684}
0 commit comments