Skip to content

Commit 354f195

Browse files
authored
[typescript-fetch] Support deepObject query params (OpenAPITools#6075)
deepObject query parameters need to be specially marshalled. Unfortunately, they're quite tricky to distinguish in mustache because there's no boolean property for deepObject, so add a vendorExtension property to ease the mustache template.
1 parent 3d5b140 commit 354f195

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java

+14
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,23 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
236236
this.addOperationObjectResponseInformation(operations);
237237
this.addOperationPrefixParameterInterfacesInformation(operations);
238238
this.escapeOperationIds(operations);
239+
this.addDeepObjectVendorExtension(operations);
239240
return operations;
240241
}
241242

243+
private void addDeepObjectVendorExtension(Map<String, Object> operations) {
244+
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
245+
List<CodegenOperation> operationList = (List<CodegenOperation>) _operations.get("operation");
246+
247+
for (CodegenOperation op : operationList) {
248+
for (CodegenParameter param : op.queryParams) {
249+
if (param.style != null && param.style.equals("deepObject")) {
250+
param.vendorExtensions.put("x-codegen-isDeepObject", true);
251+
}
252+
}
253+
}
254+
}
255+
242256
private void escapeOperationIds(Map<String, Object> operations) {
243257
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
244258
List<CodegenOperation> operationList = (List<CodegenOperation>) _operations.get("operation");

modules/openapi-generator/src/main/resources/typescript-fetch/apis.mustache

+5
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,12 @@ export class {{classname}} extends runtime.BaseAPI {
122122
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
123123
{{/isDate}}
124124
{{^isDate}}
125+
{{#vendorExtensions.x-codegen-isDeepObject}}
126+
queryParameters['{{baseName}}'] = runtime.querystring(requestParameters.{{paramName}} as unknown as runtime.HTTPQuery, '{{baseName}}');
127+
{{/vendorExtensions.x-codegen-isDeepObject}}
128+
{{^vendorExtensions.x-codegen-isDeepObject}}
125129
queryParameters['{{baseName}}'] = requestParameters.{{paramName}};
130+
{{/vendorExtensions.x-codegen-isDeepObject}}
126131
{{/isDate}}
127132
{{/isDateTime}}
128133
}

0 commit comments

Comments
 (0)