[typescript-axios] query parameter intersects with code
programmer106 opened this issue · 1 comments
programmer106 commented
Given such an api e.g:
'/pet/{query}':
get:
tags:
- pet
summary: Find pet by ID
description: Returns a single pet
operationId: getPetById
parameters:
- name: query
in: path
description: jsonb query for choosing pet
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/xml:
schema:
$ref: '#/components/schemas/Pet'
application/json:
schema:
$ref: '#/components/schemas/Pet'
'400':
description: Invalid ID supplied
'404':
description: Pet not found
security:
- api_key: []
- petstore_auth:
- 'write:pets'
- 'read:pets'
as a result we get:
/**
* Returns a single pet
* @summary Find pet by ID
* @param {string} query jsonb query for choosing pet
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
getPetById: async (query: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'query' is not null or undefined
if (query === null || query === undefined) {
throw new RequiredError('query','Required parameter query was null or undefined when calling getPetById.');
}
const localVarPath = `/pet/{query}`
.replace(`{${"query"}}`, encodeURIComponent(String(query)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
// authentication api_key required
if (configuration && configuration.apiKey) {
const localVarApiKeyValue = typeof configuration.apiKey === 'function'
? await configuration.apiKey("api_key")
: await configuration.apiKey;
localVarHeaderParameter["api_key"] = localVarApiKeyValue;
}
// authentication petstore_auth required
// oauth required
if (configuration && configuration.accessToken) {
const localVarAccessTokenValue = typeof configuration.accessToken === 'function'
? await configuration.accessToken("petstore_auth", ["write:pets", "read:pets"])
: await configuration.accessToken;
localVarHeaderParameter["Authorization"] = "Bearer " + localVarAccessTokenValue;
}
const query = new URLSearchParams(localVarUrlObj.search);
for (const key in localVarQueryParameter) {
query.set(key, localVarQueryParameter[key]);
}
for (const key in options.params) {
query.set(key, options.params[key]);
}
localVarUrlObj.search = (new URLSearchParams(query)).toString();
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
return {
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
options: localVarRequestOptions,
};
},
during build we have
error TS2300: Duplicate identifier 'query'.
Which makes the whole openapi idea unmaintainable for huge legacy codebases, especially backed with postgress-jsonb query like things.