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';
31+ import type { Models } from '../models.d.ts'
432
533export class {{ service .name | caseUcfirst }} extends Service {
634{% for method in service .methods %}
7-
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 ) %}
837 /**
938 * {{ method .title }}
1039 *
@@ -18,7 +47,7 @@ export class {{ service.name | caseUcfirst }} extends Service {
1847 * @throws {AppwriteException}
1948 * @returns {Promise}
2049 */
21- async {{ method .name | caseCamel }}{% if method . type != " location " %}<T extends unknown >{% 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 == ' location' %}Response{% else %}T {% 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 %}> {
2251{% for parameter in method .parameters .all %}
2352{% if parameter .required %}
2453 if (typeof {{ parameter .name | caseCamel | escapeKeyword }} === 'undefined') {
@@ -44,12 +73,12 @@ export class {{ service.name | caseUcfirst }} extends Service {
4473{% endfor %}
4574 return await this.client.call('{{ method .method | caseLower }}', path, {
4675{% for parameter in method .parameters .header %}
47- '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
76+ '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
4877{% endfor %}
4978{% for key , header in method .headers %}
50- '{{ key }}': '{{ header }}',
79+ '{{ key }}': '{{ header }}',
5180{% endfor %}
52- }, payload);
81+ }, payload);
5382 }
5483{% endfor %}
5584}
0 commit comments