Skip to content

Commit 7e94313

Browse files
authored
cleanup generateQueryFn (#2406)
1 parent 30f7831 commit 7e94313

File tree

1 file changed

+22
-33
lines changed

1 file changed

+22
-33
lines changed

packages/rtk-query-codegen-openapi/src/generate.ts

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -350,18 +350,28 @@ export async function generateApi(
350350
}) {
351351
const { path, verb } = operationDefinition;
352352

353-
const pathParameters = Object.values(queryArg).filter((def) => def.origin === 'param' && def.param.in === 'path');
354-
const queryParameters = Object.values(queryArg).filter((def) => def.origin === 'param' && def.param.in === 'query');
355-
const headerParameters = Object.values(queryArg).filter(
356-
(def) => def.origin === 'param' && def.param.in === 'header'
357-
);
358-
const cookieParameters = Object.values(queryArg).filter(
359-
(def) => def.origin === 'param' && def.param.in === 'cookie'
360-
);
361353
const bodyParameter = Object.values(queryArg).find((def) => def.origin === 'body');
362354

363355
const rootObject = factory.createIdentifier('queryArg');
364356

357+
function pickParams(paramIn: string) {
358+
return Object.values(queryArg).filter((def) => def.origin === 'param' && def.param.in === paramIn);
359+
}
360+
361+
function createObjectLiteralProperty(parameters: QueryArgDefinition[], propertyName: string) {
362+
return parameters.length === 0
363+
? undefined
364+
: factory.createPropertyAssignment(
365+
factory.createIdentifier(propertyName),
366+
factory.createObjectLiteralExpression(
367+
parameters.map(
368+
(param) => createPropertyAssignment(param.originalName, accessProperty(rootObject, param.name)),
369+
true
370+
)
371+
)
372+
);
373+
}
374+
365375
return factory.createArrowFunction(
366376
undefined,
367377
undefined,
@@ -385,7 +395,7 @@ export async function generateApi(
385395
[
386396
factory.createPropertyAssignment(
387397
factory.createIdentifier('url'),
388-
generatePathExpression(path, pathParameters, rootObject)
398+
generatePathExpression(path, pickParams('path'), rootObject)
389399
),
390400
isQuery && verb.toUpperCase() === 'GET'
391401
? undefined
@@ -399,24 +409,9 @@ export async function generateApi(
399409
factory.createIdentifier('body'),
400410
factory.createPropertyAccessExpression(rootObject, factory.createIdentifier(bodyParameter.name))
401411
),
402-
cookieParameters.length === 0
403-
? undefined
404-
: factory.createPropertyAssignment(
405-
factory.createIdentifier('cookies'),
406-
generateQuerArgObjectLiteralExpression(cookieParameters, rootObject)
407-
),
408-
headerParameters.length === 0
409-
? undefined
410-
: factory.createPropertyAssignment(
411-
factory.createIdentifier('headers'),
412-
generateQuerArgObjectLiteralExpression(headerParameters, rootObject)
413-
),
414-
queryParameters.length === 0
415-
? undefined
416-
: factory.createPropertyAssignment(
417-
factory.createIdentifier('params'),
418-
generateQuerArgObjectLiteralExpression(queryParameters, rootObject)
419-
),
412+
createObjectLiteralProperty(pickParams('cookie'), 'cookies'),
413+
createObjectLiteralProperty(pickParams('header'), 'headers'),
414+
createObjectLiteralProperty(pickParams('query'), 'params'),
420415
].filter(removeUndefined),
421416
false
422417
)
@@ -468,12 +463,6 @@ function generatePathExpression(path: string, pathParameters: QueryArgDefinition
468463
: factory.createNoSubstitutionTemplateLiteral(head);
469464
}
470465

471-
function generateQuerArgObjectLiteralExpression(queryArgs: QueryArgDefinition[], rootObject: ts.Identifier) {
472-
return factory.createObjectLiteralExpression(
473-
queryArgs.map((param) => createPropertyAssignment(param.originalName, accessProperty(rootObject, param.name)), true)
474-
);
475-
}
476-
477466
type QueryArgDefinition = {
478467
name: string;
479468
originalName: string;

0 commit comments

Comments
 (0)