Skip to content

Commit 490d525

Browse files
Merge pull request #1037 from appwrite/pla-2407
Fix "attributes" typing for Node and Web SDKs
2 parents 09bc721 + 4bdd4ff commit 490d525

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ sdk-generator/blob/master/example.php:
115115
Run the following command (make sure you have an updated docker version on your machine):
116116

117117
```bash
118-
docker run --rm -v $(pwd):/app -w /app php:8.1-cli php example.php
118+
docker run --rm -v $(pwd):/app -w /app php:8.3-cli php example.php
119119
```
120120

121121
>Note: You can just add the new language next to the other languages in the `example.php` file. You don't need to rewrite the file completely.
@@ -252,7 +252,7 @@ Also in `.travis.yml` add new env `SDK=[Language]` so that travis will run a tes
252252

253253
Finally, you can run tests using:
254254
```sh
255-
docker run --rm -v $(pwd):$(pwd):rw -w $(pwd) -v /var/run/docker.sock:/var/run/docker.sock php:8.1-cli-alpine sh -c "apk add docker-cli && vendor/bin/phpunit"
255+
docker run --rm -v $(pwd):$(pwd):rw -w $(pwd) -v /var/run/docker.sock:/var/run/docker.sock php:8.3-cli-alpine sh -c "apk add docker-cli && vendor/bin/phpunit"
256256
```
257257

258258
## SDK Generator Interface

src/SDK/Language/Node.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,19 @@ public function getTypeName(array $parameter, array $method = []): string
2929
case self::TYPE_NUMBER:
3030
return 'number';
3131
case self::TYPE_ARRAY:
32+
if (!empty($parameter['array']['x-anyOf'] ?? [])) {
33+
$unionTypes = [];
34+
foreach ($parameter['array']['x-anyOf'] as $refType) {
35+
if (isset($refType['$ref'])) {
36+
$refParts = explode('/', $refType['$ref']);
37+
$modelName = end($refParts);
38+
$unionTypes[] = 'Models.' . $this->toPascalCase($modelName);
39+
}
40+
}
41+
if (!empty($unionTypes)) {
42+
return '(' . implode(' | ', $unionTypes) . ')[]';
43+
}
44+
}
3245
if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) {
3346
return $this->getTypeName($parameter['array']) . '[]';
3447
}

src/SDK/Language/Web.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,19 @@ public function getTypeName(array $parameter, array $method = []): string
194194
case self::TYPE_NUMBER:
195195
return 'number';
196196
case self::TYPE_ARRAY:
197+
if (!empty($parameter['array']['x-anyOf'] ?? [])) {
198+
$unionTypes = [];
199+
foreach ($parameter['array']['x-anyOf'] as $refType) {
200+
if (isset($refType['$ref'])) {
201+
$refParts = explode('/', $refType['$ref']);
202+
$modelName = end($refParts);
203+
$unionTypes[] = 'Models.' . $this->toPascalCase($modelName);
204+
}
205+
}
206+
if (!empty($unionTypes)) {
207+
return '(' . implode(' | ', $unionTypes) . ')[]';
208+
}
209+
}
197210
if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) {
198211
return $this->getTypeName($parameter['array']) . '[]';
199212
}

0 commit comments

Comments
 (0)