Skip to content

Commit 2ac74d5

Browse files
Merge pull request #628 from appwrite/feat-nullable-required
Nullable required
2 parents 53f9782 + 7003fa9 commit 2ac74d5

File tree

13 files changed

+18
-16
lines changed

13 files changed

+18
-16
lines changed

src/Spec/Swagger2.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ public function getMethods($service)
207207
'class' => $parameter['x-class'] ?? null,
208208
'description' => $parameter['description'] ?? '',
209209
'required' => $parameter['required'] ?? false,
210+
'nullable' => $parameter['x-nullable'] ?? false,
210211
'default' => $parameter['default'] ?? null,
211212
'example' => $parameter['x-example'] ?? null,
212213
'isUploadID' => $parameter['x-upload-id'] ?? false,
@@ -245,6 +246,7 @@ public function getMethods($service)
245246
$param['required'] = (in_array($key, $bodyRequired));
246247
$param['example'] = $value['x-example'] ?? null;
247248
$param['isUploadID'] = $value['x-upload-id'] ?? false;
249+
$param['nullable'] = $value['x-nullable'] ?? false;
248250
$param['array'] = [
249251
'type' => $value['items']['type'] ?? '',
250252
];

templates/android/library/src/main/java/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class {{ service.name | caseUcfirst }} : Service {
4444
activity: ComponentActivity,
4545
{%~ endif %}
4646
{%~ for parameter in method.parameters.all %}
47-
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required %}? = null{% endif %},
47+
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required or parameter.nullable %}? = null{% endif %},
4848
{%~ endfor %}
4949
{%~ if method.responseModel | hasGenericType(spec) %}
5050
nestedType: Class<T>,
@@ -198,7 +198,7 @@ class {{ service.name | caseUcfirst }} : Service {
198198
activity: ComponentActivity,
199199
{%~ endif %}
200200
{%~ for parameter in method.parameters.all %}
201-
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required %}? = null{% endif %},
201+
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required or parameter.nullable %}? = null{% endif %},
202202
{%~ endfor %}
203203
{%~ if 'multipart/form-data' in method.consumes %}
204204
onProgress: ((UploadProgress) -> Unit)? = null

templates/cli/lib/commands/command.js.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ const {{ service.name | caseLower }}{{ method.name | caseUcfirst }} = async ({ {
228228
{% autoescape false %}
229229
.description(`{{ method.description | replace({'`':'\''}) | replace({'\n':' '}) | replace({'\n \n':' '}) }}`)
230230
{% for parameter in method.parameters.all %}
231-
.{% if parameter.required %}requiredOption{% else %}option{% endif %}(`--{{ parameter.name | escapeKeyword }} {% if parameter.array.type|length > 0 %}[{% else %}<{% endif %}{{ parameter.name | escapeKeyword }}{% if parameter.array.type|length > 0 %}...{% endif %}{% if parameter.array.type|length > 0 %}]{% else %}>{% endif %}`, `{{ parameter.description | replace({'`':'\''}) | replace({'\n':' '}) | replace({'\n \n':' '}) }}`{% if parameter | typeName == 'boolean' %}, parseBool{% elseif parameter | typeName == 'number' %}, parseInteger{% endif %})
231+
.{% if parameter.required and not parameter.nullable %}requiredOption{% else %}option{% endif %}(`--{{ parameter.name | escapeKeyword }} {% if parameter.array.type|length > 0 %}[{% else %}<{% endif %}{{ parameter.name | escapeKeyword }}{% if parameter.array.type|length > 0 %}...{% endif %}{% if parameter.array.type|length > 0 %}]{% else %}>{% endif %}`, `{{ parameter.description | replace({'`':'\''}) | replace({'\n':' '}) | replace({'\n \n':' '}) }}`{% if parameter | typeName == 'boolean' %}, parseBool{% elseif parameter | typeName == 'number' %}, parseInteger{% endif %})
232232
{% endfor %}
233233
{% if method.type == 'location' %}
234234
.requiredOption(`--destination <path>`, `output file path.`)

templates/dart/README.md.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ dependencies:
3535
You can install packages from the command line:
3636

3737
```bash
38-
pub get {{ language.params.packageName }}
38+
dart pub add {{ language.params.packageName }}
3939
```
4040

4141
{% if sdk.gettingStarted %}

templates/dart/lib/services/service.dart.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
part of {{ language.params.packageName }};
2-
{% macro parameter(parameter) %}{% if parameter.required %}required {{ parameter | typeName }}{% else %}{{ parameter | typeName }}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %}
2+
{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %}
33
{% macro method_parameters(parameters, consumes) %}
44
{% if parameters|length > 0 %}{{ '{' }}{% for parameter in parameters %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %}
55
{% endmacro %}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export class {{ service.name | caseUcfirst }} extends Service {
6363
* @throws {AppwriteException}
6464
* @returns {Promise}
6565
*/
66-
async {{ method.name | caseCamel }}{% if generics %}<{{generics}}>{% endif %}({% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %}?{% endif %}: {{ parameter | typeName }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, onProgress = (progress: UploadProgress) => {}{% endif %}): 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 %}> {
66+
async {{ method.name | caseCamel }}{% if generics %}<{{generics}}>{% endif %}({% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | typeName }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, onProgress = (progress: UploadProgress) => {}{% endif %}): 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 %}> {
6767
{% for parameter in method.parameters.all %}
6868
{% if parameter.required %}
6969
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} === 'undefined') {

templates/flutter/README.md.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ dependencies:
3535
You can install packages from the command line:
3636

3737
```bash
38-
pub get {{ language.params.packageName }}
38+
flutter pub add {{ language.params.packageName }}
3939
```
4040

4141
{% if sdk.gettingStarted %}

templates/flutter/lib/services/service.dart.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
part of {{ language.params.packageName }};
2-
{% macro parameter(parameter) %}{% if parameter.required %}required {{ parameter | typeName }}{% else %}{{ parameter | typeName }}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %}
2+
{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %}
33
{% macro method_parameters(parameters, consumes) %}
44
{% if parameters|length > 0 %}{{ '{' }}{% for parameter in parameters %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %}
55
{% endmacro %}

templates/kotlin/src/main/kotlin/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class {{ service.name | caseUcfirst }} : Service {
4040
activity: ComponentActivity,
4141
{%~ endif %}
4242
{%~ for parameter in method.parameters.all %}
43-
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required %}? = null{% endif %},
43+
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required or parameter.nullable %}? = null{% endif %},
4444
{%~ endfor %}
4545
{%~ if method.responseModel | hasGenericType(spec) %}
4646
nestedType: Class<T>,
@@ -101,7 +101,7 @@ class {{ service.name | caseUcfirst }} : Service {
101101
@Throws({{ spec.title | caseUcfirst }}Exception::class)
102102
suspend fun {{ method.name | caseCamel }}(
103103
{%~ for parameter in method.parameters.all %}
104-
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required %}? = null{% endif %},
104+
{{ parameter.name | caseCamel }}: {{ parameter | typeName }}{%~ if not parameter.required or parameter.nullable %}? = null{% endif %},
105105
{%~ endfor %}
106106
{%~ if 'multipart/form-data' in method.consumes %}
107107
onProgress: ((UploadProgress) -> Unit)? = null

templates/node/index.d.ts.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ declare module "{{ language.params.npmPackage|caseDash }}" {
200200

201201
{% for service in spec.services %}
202202
export class {{ service.name | caseUcfirst }} extends Service {
203-
constructor(client: Client{% for parameter in service.globalParams %}, {{ parameter.name | caseCamel | escapeKeyword }}: {{ parameter | typeName }}{% if not parameter.required %}|null{% endif %}{% endfor %});
203+
constructor(client: Client{% for parameter in service.globalParams %}, {{ parameter.name | caseCamel | escapeKeyword }}: {{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}|null{% endif %}{% endfor %});
204204

205205
{% if service.globalParams | length %}
206206
{% for parameter in service.globalParams %}
@@ -237,7 +237,7 @@ declare module "{{ language.params.npmPackage|caseDash }}" {
237237
* @throws {{ '{' }}{{ spec.title | caseUcfirst}}Exception}
238238
* @returns {Promise}
239239
*/
240-
{{ method.name | caseCamel }}{% if generics %}<{{generics}}>{% endif %}({% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %}?{% endif %}: {{ parameter | typeName }}{% if not loop.last %}, {% endif %}{% endfor %}): Promise<{% if method.type == 'location' %}Buffer{% 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 %}string{% endif %}{% endif %}>;
240+
{{ method.name | caseCamel }}{% if generics %}<{{generics}}>{% endif %}({% for parameter in method.parameters.all %}{{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required or parameter.nullable %}?{% endif %}: {{ parameter | typeName }}{% if not loop.last %}, {% endif %}{% endfor %}): Promise<{% if method.type == 'location' %}Buffer{% 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 %}string{% endif %}{% endif %}>;
241241
{% endfor %}
242242
}
243243
{% endfor %}

0 commit comments

Comments
 (0)