Merge pull request #12290 from appwrite/fix-sdk-generator-for-response-enums

Fix: Project SDK enum names
This commit is contained in:
Matej Bačo
2026-05-12 14:55:48 +02:00
committed by GitHub
6 changed files with 50 additions and 10 deletions
+43 -6
View File
@@ -757,28 +757,28 @@ abstract class Format
case 'updateAuthMethod':
switch ($param) {
case 'methodId':
return 'AuthMethod';
return 'ProjectAuthMethodId';
}
break;
case 'getPolicy':
switch ($param) {
case 'policyId':
return 'ProjectPolicy';
return 'ProjectPolicyId';
}
break;
case 'getOAuth2Provider':
switch ($param) {
case 'providerId':
return 'OAuthProvider';
return 'ProjectOAuthProviderId';
}
break;
case 'getEmailTemplate':
case 'updateEmailTemplate':
switch ($param) {
case 'templateId':
return 'EmailTemplateType';
return 'ProjectEmailTemplateId';
case 'locale':
return 'EmailTemplateLocale';
return 'ProjectEmailTemplateLocale';
}
break;
case 'getUsage':
@@ -787,6 +787,39 @@ abstract class Format
return 'ProjectUsageRange';
}
break;
case 'updateProtocol':
switch ($param) {
case 'protocolId':
return 'ProjectProtocolId';
}
break;
case 'updateService':
switch ($param) {
case 'serviceId':
return 'ProjectServiceId';
}
break;
case 'updateSMTP':
case 'createSMTPTest':
switch ($param) {
case 'secure':
return 'ProjectSMTPSecure';
}
break;
case 'updateOAuth2Google':
switch ($param) {
case 'prompt':
return 'ProjectOAuth2GooglePrompt';
}
break;
case 'createKey':
case 'createEphemeralKey':
case 'updateKey':
switch ($param) {
case 'scopes':
return 'ProjectKeyScopes';
}
break;
}
break;
case 'projects':
@@ -1019,8 +1052,12 @@ abstract class Format
return self::REQUEST_PARAMETER_OVERRIDES;
}
public function getResponseEnumName(string $model, string $param): ?string
public function getResponseEnumName(string $model, string $param, ?string $enumSDKName = null): ?string
{
if ($enumSDKName) {
return $enumSDKName;
}
if ($param === 'type' && \str_starts_with($model, 'platform') && $model !== 'platformList') {
return 'PlatformType';
}
@@ -988,13 +988,13 @@ class OpenAPI3 extends Format
if ($rule['type'] === 'enum' && !empty($rule['enum'])) {
if ($rule['array']) {
$output['components']['schemas'][$model->getType()]['properties'][$name]['items']['enum'] = \array_values($rule['enum']);
$enumName = $this->getResponseEnumName($model->getType(), $name);
$enumName = $this->getResponseEnumName($model->getType(), $name, $rule['enumSDKName'] ?? null);
if ($enumName) {
$output['components']['schemas'][$model->getType()]['properties'][$name]['items']['x-enum-name'] = $enumName;
}
} else {
$output['components']['schemas'][$model->getType()]['properties'][$name]['enum'] = \array_values($rule['enum']);
$enumName = $this->getResponseEnumName($model->getType(), $name);
$enumName = $this->getResponseEnumName($model->getType(), $name, $rule['enumSDKName'] ?? null);
if ($enumName) {
$output['components']['schemas'][$model->getType()]['properties'][$name]['x-enum-name'] = $enumName;
}
@@ -975,13 +975,13 @@ class Swagger2 extends Format
if ($rule['type'] === 'enum' && !empty($rule['enum'])) {
if ($rule['array']) {
$output['definitions'][$model->getType()]['properties'][$name]['items']['enum'] = \array_values($rule['enum']);
$enumName = $this->getResponseEnumName($model->getType(), $name);
$enumName = $this->getResponseEnumName($model->getType(), $name, $rule['enumSDKName'] ?? null);
if ($enumName) {
$output['definitions'][$model->getType()]['properties'][$name]['items']['x-enum-name'] = $enumName;
}
} else {
$output['definitions'][$model->getType()]['properties'][$name]['enum'] = \array_values($rule['enum']);
$enumName = $this->getResponseEnumName($model->getType(), $name);
$enumName = $this->getResponseEnumName($model->getType(), $name, $rule['enumSDKName'] ?? null);
if ($enumName) {
$output['definitions'][$model->getType()]['properties'][$name]['x-enum-name'] = $enumName;
}
@@ -17,6 +17,7 @@ class ProjectAuthMethod extends Model
'default' => '',
'example' => 'email-password',
'enum' => \array_keys(Config::getParam('auth', [])),
'enumSDKName' => 'ProjectAuthMethodId',
])
->addRule('enabled', [
'type' => self::TYPE_BOOLEAN,
@@ -17,6 +17,7 @@ class ProjectProtocol extends Model
'default' => '',
'example' => 'graphql',
'enum' => \array_keys(Config::getParam('protocols', [])),
'enumSDKName' => 'ProjectProtocolId',
])
->addRule('enabled', [
'type' => self::TYPE_BOOLEAN,
@@ -17,6 +17,7 @@ class ProjectService extends Model
'default' => '',
'example' => 'sites',
'enum' => \array_keys(\array_filter(Config::getParam('services', []), fn ($element) => $element['optional'])),
'enumSDKName' => 'ProjectServiceId',
])
->addRule('enabled', [
'type' => self::TYPE_BOOLEAN,