Skip to content

Commit 4a6e0da

Browse files
authored
Merge pull request #1156 from appwrite/fix-web-row-handling
Fix row handling
2 parents e5760ef + 40693dd commit 4a6e0da

File tree

6 files changed

+72
-18
lines changed

6 files changed

+72
-18
lines changed

src/SDK/Language/Node.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ public function getTypeName(array $parameter, array $method = []): string
6262
if ($method['method'] === 'patch') {
6363
return "Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>";
6464
}
65+
break;
66+
case 'row':
67+
if ($method['method'] === 'post') {
68+
return "Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>";
69+
}
70+
if ($method['method'] === 'patch' || $method['method'] === 'put') {
71+
return "Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>";
72+
}
73+
break;
6574
}
6675
break;
6776
}

src/SDK/Language/ReactNative.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,15 @@ public function getTypeName(array $parameter, array $method = []): string
165165
if ($method['method'] === 'patch' || $method['method'] === 'put') {
166166
return "Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>";
167167
}
168+
break;
169+
case 'row':
170+
if ($method['method'] === 'post') {
171+
return "Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>";
172+
}
173+
if ($method['method'] === 'patch' || $method['method'] === 'put') {
174+
return "Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>";
175+
}
176+
break;
168177
}
169178
break;
170179
}

src/SDK/Language/Web.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,15 @@ public function getTypeName(array $parameter, array $method = []): string
247247
if ($method['method'] === 'patch' || $method['method'] === 'put') {
248248
return "Document extends Models.DefaultDocument ? Partial<Models.Document> & Record<string, any> : Partial<Models.Document> & Partial<Omit<Document, keyof Models.Document>>";
249249
}
250+
break;
251+
case 'row':
252+
if ($method['method'] === 'post') {
253+
return "Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>";
254+
}
255+
if ($method['method'] === 'patch' || $method['method'] === 'put') {
256+
return "Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>";
257+
}
258+
break;
250259
}
251260
break;
252261
}

templates/node/src/services/template.ts.twig

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class {{ service.name | caseUcfirst }} {
3232
{%~ endif %}
3333
*
3434
{%~ for parameter in method.parameters.all %}
35-
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
35+
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} params.{{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
3636
{%~ endfor %}
3737
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
3838
* @returns {{ '{' }}{{ method | getReturn(spec) | raw }}{{ '}' }}
@@ -47,8 +47,17 @@ export class {{ service.name | caseUcfirst }} {
4747
{%~ if method.parameters.all|length > 0 %}
4848
{{ method.name | caseCamel }}{{ method.responseModel | getGenerics(spec) | raw }}(params: { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} {% if 'multipart/form-data' in method.consumes %}, onProgress?: (progress: UploadProgress) => {}{% endif %} }): {{ method | getReturn(spec) | raw }};
4949
/**
50-
* @deprecated Parameter-based methods will be removed in the upcoming version.
51-
* Please use the object based method instead for better developer experience.
50+
{%~ if method.description %}
51+
* {{ method.description | replace({'\n': '\n * '}) | raw }}
52+
{%~ endif %}
53+
*
54+
{%~ for parameter in method.parameters.all %}
55+
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
56+
{%~ endfor %}
57+
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
58+
* @returns {{ '{' }}{{ method | getReturn(spec) | raw }}{{ '}' }}
59+
* @deprecated Flat parameter style methods will be removed in a future version.
60+
* Please use the object parameter style method instead for a better developer experience.
5261
*
5362
* @example
5463
* // Old (deprecated)
@@ -69,10 +78,10 @@ export class {{ service.name | caseUcfirst }} {
6978
let onProgress: ((progress: UploadProgress) => {});
7079
{%~ endif %}
7180

72-
if (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst){% set firstParamType = method.parameters.all[0] | getPropertyType(method) | raw %}{% if not (firstParamType starts with 'string' or firstParamType starts with 'number' or firstParamType starts with 'boolean') %} && '{{ method.parameters.all[0].name | caseCamel | escapeKeyword }}' in paramsOrFirst{% endif %}) {
73-
params = paramsOrFirst as { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} };
81+
if ({% set hasRequired = false %}{% for parameter in method.parameters.all %}{% if parameter.required %}{% set hasRequired = true %}{% endif %}{% endfor %}{% if not hasRequired %}!paramsOrFirst || {% endif %}(paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst){% set firstParamType = method.parameters.all[0] | getPropertyType(method) | raw %}{% if not (firstParamType starts with 'string' or firstParamType starts with 'number' or firstParamType starts with 'boolean') %} && '{{ method.parameters.all[0].name | caseCamel | escapeKeyword }}' in paramsOrFirst{% endif %})) {
82+
params = (paramsOrFirst || {}) as { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} };
7483
{%~ if 'multipart/form-data' in method.consumes %}
75-
onProgress = paramsOrFirst.onProgress as ((progress: UploadProgress) => {});
84+
onProgress = paramsOrFirst?.onProgress as ((progress: UploadProgress) => {});
7685
{%~ endif %}
7786
} else {
7887
params = {

templates/react-native/src/services/template.ts.twig

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class {{ service.name | caseUcfirst }} extends Service {
3636
{%~ endif %}
3737
*
3838
{%~ for parameter in method.parameters.all %}
39-
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
39+
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} params.{{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
4040
{%~ endfor %}
4141
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
4242
* @returns {% if method.type == 'webAuth' %}{void|string}{% elseif method.type == 'location' %}{ArrayBuffer}{% else %}{Promise}{% endif %}
@@ -52,8 +52,17 @@ export class {{ service.name | caseUcfirst }} extends Service {
5252
{%~ if method.parameters.all|length > 0 %}
5353
{% if method.type == 'upload'%}async {% endif %}{{ method.name | caseCamel }}{{ method.responseModel | getGenerics(spec) | raw }}(params: { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} {% if 'multipart/form-data' in method.consumes %}, onProgress?: (progress: UploadProgress) => {}{% endif %} }): {{ method | getReturn(spec) | raw }};
5454
/**
55-
* @deprecated Parameter-based methods will be removed in the upcoming version.
56-
* Please use the object based method instead for better developer experience.
55+
{%~ if method.description %}
56+
* {{ method.description | replace({'\n': '\n * '}) | raw }}
57+
{%~ endif %}
58+
*
59+
{%~ for parameter in method.parameters.all %}
60+
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
61+
{%~ endfor %}
62+
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
63+
* @returns {% if method.type == 'webAuth' %}{void|string}{% elseif method.type == 'location' %}{ArrayBuffer}{% else %}{Promise}{% endif %}
64+
* @deprecated Flat parameter style methods will be removed in a future version.
65+
* Please use the object parameter style method instead for a better developer experience.
5766
*
5867
* @example
5968
* // Old (deprecated)
@@ -74,10 +83,10 @@ export class {{ service.name | caseUcfirst }} extends Service {
7483
let onProgress: ((progress: UploadProgress) => {});
7584
{%~ endif %}
7685

77-
if (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst){% set firstParamType = method.parameters.all[0] | getPropertyType(method) | raw %}{% if not (firstParamType starts with 'string' or firstParamType starts with 'number' or firstParamType starts with 'boolean') %} && '{{ method.parameters.all[0].name | caseCamel | escapeKeyword }}' in paramsOrFirst{% endif %}) {
78-
params = paramsOrFirst as { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} };
86+
if ({% set hasRequired = false %}{% for parameter in method.parameters.all %}{% if parameter.required %}{% set hasRequired = true %}{% endif %}{% endfor %}{% if not hasRequired %}!paramsOrFirst || {% endif %}(paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst){% set firstParamType = method.parameters.all[0] | getPropertyType(method) | raw %}{% if not (firstParamType starts with 'string' or firstParamType starts with 'number' or firstParamType starts with 'boolean') %} && '{{ method.parameters.all[0].name | caseCamel | escapeKeyword }}' in paramsOrFirst{% endif %})) {
87+
params = (paramsOrFirst || {}) as { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} };
7988
{%~ if 'multipart/form-data' in method.consumes %}
80-
onProgress = paramsOrFirst.onProgress as ((progress: UploadProgress) => {});
89+
onProgress = paramsOrFirst?.onProgress as ((progress: UploadProgress) => {});
8190
{%~ endif %}
8291
} else {
8392
params = {

templates/web/src/services/template.ts.twig

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export class {{ service.name | caseUcfirst }} {
3333
{%~ endif %}
3434
*
3535
{%~ for parameter in method.parameters.all %}
36-
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
36+
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} params.{{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
3737
{%~ endfor %}
3838
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
3939
* @returns {{ '{' }}{{ method | getReturn(spec) | raw }}{{ '}' }}
@@ -48,8 +48,17 @@ export class {{ service.name | caseUcfirst }} {
4848
{%~ if method.parameters.all|length > 0 %}
4949
{{ method.name | caseCamel }}{{ method.responseModel | getGenerics(spec) | raw }}(params: { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} {% if 'multipart/form-data' in method.consumes %}, onProgress?: (progress: UploadProgress) => {}{% endif %} }): {{ method | getReturn(spec) | raw }};
5050
/**
51-
* @deprecated Parameter-based methods will be removed in the upcoming version.
52-
* Please use the object based method instead for better developer experience.
51+
{%~ if method.description %}
52+
* {{ method.description | replace({'\n': '\n * '}) | raw }}
53+
{%~ endif %}
54+
*
55+
{%~ for parameter in method.parameters.all %}
56+
* @param {{ '{' }}{{ parameter | getPropertyType(method) | raw }}{{ '}' }} {{ parameter.name | caseCamel | escapeKeyword }} - {{ parameter.description | raw }}
57+
{%~ endfor %}
58+
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
59+
* @returns {{ '{' }}{{ method | getReturn(spec) | raw }}{{ '}' }}
60+
* @deprecated Flat parameter style methods will be removed in a future version.
61+
* Please use the object parameter style method instead for a better developer experience.
5362
*
5463
* @example
5564
* // Old (deprecated)
@@ -70,10 +79,10 @@ export class {{ service.name | caseUcfirst }} {
7079
let onProgress: ((progress: UploadProgress) => {});
7180
{%~ endif %}
7281

73-
if (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst){% set firstParamType = method.parameters.all[0] | getPropertyType(method) | raw %}{% if not (firstParamType starts with 'string' or firstParamType starts with 'number' or firstParamType starts with 'boolean') %} && '{{ method.parameters.all[0].name | caseCamel | escapeKeyword }}' in paramsOrFirst{% endif %}) {
74-
params = paramsOrFirst as { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} };
82+
if ({% set hasRequired = false %}{% for parameter in method.parameters.all %}{% if parameter.required %}{% set hasRequired = true %}{% endif %}{% endfor %}{% if not hasRequired %}!paramsOrFirst || {% endif %}(paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst){% set firstParamType = method.parameters.all[0] | getPropertyType(method) | raw %}{% if not (firstParamType starts with 'string' or firstParamType starts with 'number' or firstParamType starts with 'boolean') %} && '{{ method.parameters.all[0].name | caseCamel | escapeKeyword }}' in paramsOrFirst{% endif %})) {
83+
params = (paramsOrFirst || {}) as { {% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | getPropertyType(method) | raw }}{% if not loop.last %}, {% endif %}{% endfor %} };
7584
{%~ if 'multipart/form-data' in method.consumes %}
76-
onProgress = paramsOrFirst.onProgress as ((progress: UploadProgress) => {});
85+
onProgress = paramsOrFirst?.onProgress as ((progress: UploadProgress) => {});
7786
{%~ endif %}
7887
} else {
7988
params = {

0 commit comments

Comments
 (0)