Skip to content

Commit d50de18

Browse files
fix(deno): all typed methods
1 parent 19a52d1 commit d50de18

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

templates/deno/src/services/service.ts.twig

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,39 @@
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 %}
128
import { Service } from '../service.ts';
229
import { Payload } from '../client.ts';
330
import { AppwriteException } from '../exception.ts';
431
import type { Models } from '../models.d.ts'
532

633
export 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

Comments
 (0)