Skip to content

Commit 0529b6f

Browse files
authored
fix: reuse helper to generate keys in prefetch hooks (#103)
1 parent 1f95fbf commit 0529b6f

File tree

4 files changed

+27
-27
lines changed

4 files changed

+27
-27
lines changed

src/createPrefetch.mts

+20-20
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
import type { MethodDescription } from "./common.mjs";
99
import {
1010
createQueryKeyFromMethod,
11+
getQueryKeyFnName,
1112
getRequestParamFromMethod,
1213
hookNameFromMethod,
1314
} from "./createUseQuery.mjs";
@@ -66,27 +67,26 @@ function createPrefetchHook({
6667
ts.factory.createObjectLiteralExpression([
6768
ts.factory.createPropertyAssignment(
6869
ts.factory.createIdentifier("queryKey"),
69-
ts.factory.createArrayLiteralExpression(
70-
[
71-
BuildCommonTypeName(queryKey),
72-
method.getParameters().length
73-
? ts.factory.createArrayLiteralExpression([
74-
ts.factory.createObjectLiteralExpression(
75-
method
76-
.getParameters()
77-
.flatMap((param) =>
78-
extractPropertiesFromObjectParam(param).map(
79-
(p) =>
80-
ts.factory.createShorthandPropertyAssignment(
81-
ts.factory.createIdentifier(p.name),
82-
),
83-
),
70+
ts.factory.createCallExpression(
71+
BuildCommonTypeName(getQueryKeyFnName(queryKey)),
72+
undefined,
73+
74+
method.getParameters().length
75+
? [
76+
ts.factory.createObjectLiteralExpression(
77+
method
78+
.getParameters()
79+
.flatMap((param) =>
80+
extractPropertiesFromObjectParam(param).map(
81+
(p) =>
82+
ts.factory.createShorthandPropertyAssignment(
83+
ts.factory.createIdentifier(p.name),
84+
),
8485
),
85-
),
86-
])
87-
: ts.factory.createArrayLiteralExpression([]),
88-
],
89-
false,
86+
),
87+
),
88+
]
89+
: [],
9090
),
9191
),
9292
ts.factory.createPropertyAssignment(

src/createUseQuery.mts

+1-1
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ export const createUseQuery = ({
463463
};
464464
};
465465

466-
function getQueryKeyFnName(queryKey: string) {
466+
export function getQueryKeyFnName(queryKey: string) {
467467
return `${capitalizeFirstLetter(queryKey)}Fn`;
468468
}
469469

tests/__snapshots__/createSource.test.ts.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,14 @@ import { Pet, NewPet, Error, FindPetsData, FindPetsResponse, AddPetData, AddPetR
183183
export const prefetchUseDefaultServiceFindPets = (queryClient: QueryClient, { limit, tags }: {
184184
limit?: number;
185185
tags?: string[];
186-
} = {}) => queryClient.prefetchQuery({ queryKey: [Common.useDefaultServiceFindPetsKey, [{ limit, tags }]], queryFn: () => DefaultService.findPets({ limit, tags }) });
186+
} = {}) => queryClient.prefetchQuery({ queryKey: Common.UseDefaultServiceFindPetsKeyFn({ limit, tags }), queryFn: () => DefaultService.findPets({ limit, tags }) });
187187
/**
188188
* @deprecated
189189
* This path is not fully defined.
190190
* @returns unknown unexpected error
191191
* @throws ApiError
192192
*/
193-
export const prefetchUseDefaultServiceGetNotDefined = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: [Common.useDefaultServiceGetNotDefinedKey, []], queryFn: () => DefaultService.getNotDefined() });
193+
export const prefetchUseDefaultServiceGetNotDefined = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: Common.UseDefaultServiceGetNotDefinedKeyFn(), queryFn: () => DefaultService.getNotDefined() });
194194
/**
195195
* Returns a user based on a single ID, if the user does not have access to the pet
196196
* @param data The data for the request.
@@ -201,6 +201,6 @@ export const prefetchUseDefaultServiceGetNotDefined = (queryClient: QueryClient)
201201
*/
202202
export const prefetchUseDefaultServiceFindPetById = (queryClient: QueryClient, { id }: {
203203
id: number;
204-
}) => queryClient.prefetchQuery({ queryKey: [Common.useDefaultServiceFindPetByIdKey, [{ id }]], queryFn: () => DefaultService.findPetById({ id }) });
204+
}) => queryClient.prefetchQuery({ queryKey: Common.UseDefaultServiceFindPetByIdKeyFn({ id }), queryFn: () => DefaultService.findPetById({ id }) });
205205
"
206206
`;

tests/__snapshots__/generate.test.ts.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ import * as Common from "./common";
5858
export const prefetchUseDefaultServiceFindPets = (queryClient: QueryClient, { limit, tags }: {
5959
limit?: number;
6060
tags?: string[];
61-
} = {}) => queryClient.prefetchQuery({ queryKey: [Common.useDefaultServiceFindPetsKey, [{ limit, tags }]], queryFn: () => DefaultService.findPets({ limit, tags }) });
61+
} = {}) => queryClient.prefetchQuery({ queryKey: Common.UseDefaultServiceFindPetsKeyFn({ limit, tags }), queryFn: () => DefaultService.findPets({ limit, tags }) });
6262
/**
6363
* @deprecated
6464
* This path is not fully defined.
6565
* @returns unknown unexpected error
6666
* @throws ApiError
6767
*/
68-
export const prefetchUseDefaultServiceGetNotDefined = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: [Common.useDefaultServiceGetNotDefinedKey, []], queryFn: () => DefaultService.getNotDefined() });
68+
export const prefetchUseDefaultServiceGetNotDefined = (queryClient: QueryClient) => queryClient.prefetchQuery({ queryKey: Common.UseDefaultServiceGetNotDefinedKeyFn(), queryFn: () => DefaultService.getNotDefined() });
6969
/**
7070
* Returns a user based on a single ID, if the user does not have access to the pet
7171
* @param data The data for the request.
@@ -76,7 +76,7 @@ export const prefetchUseDefaultServiceGetNotDefined = (queryClient: QueryClient)
7676
*/
7777
export const prefetchUseDefaultServiceFindPetById = (queryClient: QueryClient, { id }: {
7878
id: number;
79-
}) => queryClient.prefetchQuery({ queryKey: [Common.useDefaultServiceFindPetByIdKey, [{ id }]], queryFn: () => DefaultService.findPetById({ id }) });
79+
}) => queryClient.prefetchQuery({ queryKey: Common.UseDefaultServiceFindPetByIdKeyFn({ id }), queryFn: () => DefaultService.findPetById({ id }) });
8080
"
8181
`;
8282

0 commit comments

Comments
 (0)