Skip to content

Commit d6a7bc5

Browse files
committed
refactor(clients): address review feedback for TanStack Query hooks
- Rename `Client` type parameter to `SchemaOrClient` in useClientQueries - Remove `ExtResult` type parameter from hooks types (ClientHooks, ModelQueryHooks, ModelMutationModelResult, useModelQueries) since hooks are not subject to result extension; pass `{}` directly instead - Clean up unused ExtResultBase and InferExtResult imports
1 parent a06004e commit d6a7bc5

3 files changed

Lines changed: 152 additions & 169 deletions

File tree

packages/clients/tanstack-query/src/react.ts

Lines changed: 64 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
type UseSuspenseQueryOptions,
2020
type UseSuspenseQueryResult,
2121
} from '@tanstack/react-query';
22-
import { createInvalidator, createOptimisticUpdater, DEFAULT_QUERY_ENDPOINT, type InferExtResult, type InferOptions, type InferSchema } from '@zenstackhq/client-helpers';
22+
import { createInvalidator, createOptimisticUpdater, DEFAULT_QUERY_ENDPOINT, type InferOptions, type InferSchema } from '@zenstackhq/client-helpers';
2323
import { fetcher, makeUrl, marshal } from '@zenstackhq/client-helpers/fetch';
2424
import { lowerCaseFirst } from '@zenstackhq/common-helpers';
2525
import type {
@@ -35,7 +35,6 @@ import type {
3535
DeleteArgs,
3636
DeleteManyArgs,
3737
ExistsArgs,
38-
ExtResultBase,
3938
FindFirstArgs,
4039
FindManyArgs,
4140
FindUniqueArgs,
@@ -70,7 +69,7 @@ import type {
7069
WithOptimistic,
7170
} from './common/types.js';
7271
export type { FetchFn } from '@zenstackhq/client-helpers/fetch';
73-
export type { InferExtResult, InferOptions, InferSchema } from '@zenstackhq/client-helpers';
72+
export type { InferOptions, InferSchema } from '@zenstackhq/client-helpers';
7473
export type { SchemaDef } from '@zenstackhq/schema';
7574

7675
type ProcedureHookFn<
@@ -146,20 +145,18 @@ export type ModelMutationModelResult<
146145
TArgs,
147146
Array extends boolean = false,
148147
Options extends QueryOptions<Schema> = QueryOptions<Schema>,
149-
ExtResult extends ExtResultBase<Schema> = {},
150-
> = Omit<ModelMutationResult<SimplifiedResult<Schema, Model, TArgs, Options, false, Array, ExtResult>, TArgs>, 'mutateAsync'> & {
148+
> = Omit<ModelMutationResult<SimplifiedResult<Schema, Model, TArgs, Options, false, Array, {}>, TArgs>, 'mutateAsync'> & {
151149
mutateAsync<T extends TArgs>(
152150
args: T,
153-
options?: ModelMutationOptions<SimplifiedResult<Schema, Model, T, Options, false, Array, ExtResult>, T>,
154-
): Promise<SimplifiedResult<Schema, Model, T, Options, false, Array, ExtResult>>;
151+
options?: ModelMutationOptions<SimplifiedResult<Schema, Model, T, Options, false, Array, {}>, T>,
152+
): Promise<SimplifiedResult<Schema, Model, T, Options, false, Array, {}>>;
155153
};
156154

157155
export type ClientHooks<
158156
Schema extends SchemaDef,
159157
Options extends QueryOptions<Schema> = QueryOptions<Schema>,
160-
ExtResult extends ExtResultBase<Schema> = {},
161158
> = {
162-
[Model in GetSlicedModels<Schema, Options> as `${Uncapitalize<Model>}`]: ModelQueryHooks<Schema, Model, Options, ExtResult>;
159+
[Model in GetSlicedModels<Schema, Options> as `${Uncapitalize<Model>}`]: ModelQueryHooks<Schema, Model, Options>;
163160
} & ProcedureHooks<Schema, Options>;
164161

165162
type ProcedureHookGroup<Schema extends SchemaDef, Options extends QueryOptions<Schema>> = {
@@ -222,88 +219,87 @@ export type ModelQueryHooks<
222219
Schema extends SchemaDef,
223220
Model extends GetModels<Schema>,
224221
Options extends QueryOptions<Schema> = QueryOptions<Schema>,
225-
ExtResult extends ExtResultBase<Schema> = {},
226222
> = TrimSlicedOperations<
227223
Schema,
228224
Model,
229225
Options,
230226
{
231-
useFindUnique<T extends FindUniqueArgs<Schema, Model, Options, {}, ExtResult>>(
232-
args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, {}, ExtResult>>,
233-
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>,
234-
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
235-
236-
useSuspenseFindUnique<T extends FindUniqueArgs<Schema, Model, Options, {}, ExtResult>>(
237-
args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, {}, ExtResult>>,
238-
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>,
239-
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
240-
241-
useFindFirst<T extends FindFirstArgs<Schema, Model, Options, {}, ExtResult>>(
242-
args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, {}, ExtResult>>,
243-
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>,
244-
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
245-
246-
useSuspenseFindFirst<T extends FindFirstArgs<Schema, Model, Options, {}, ExtResult>>(
247-
args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, {}, ExtResult>>,
248-
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>,
249-
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
227+
useFindUnique<T extends FindUniqueArgs<Schema, Model, Options, {}, {}>>(
228+
args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, {}, {}>>,
229+
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>,
230+
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>;
231+
232+
useSuspenseFindUnique<T extends FindUniqueArgs<Schema, Model, Options, {}, {}>>(
233+
args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, {}, {}>>,
234+
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>,
235+
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>;
236+
237+
useFindFirst<T extends FindFirstArgs<Schema, Model, Options, {}, {}>>(
238+
args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, {}, {}>>,
239+
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>,
240+
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>;
241+
242+
useSuspenseFindFirst<T extends FindFirstArgs<Schema, Model, Options, {}, {}>>(
243+
args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, {}, {}>>,
244+
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>,
245+
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, {}> | null>;
250246

251247
useExists<T extends ExistsArgs<Schema, Model, Options>>(
252248
args?: Subset<T, ExistsArgs<Schema, Model, Options>>,
253249
options?: ModelQueryOptions<boolean>,
254250
): ModelQueryResult<boolean>;
255251

256-
useFindMany<T extends FindManyArgs<Schema, Model, Options, {}, ExtResult>>(
257-
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, ExtResult>>,
258-
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>,
259-
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
252+
useFindMany<T extends FindManyArgs<Schema, Model, Options, {}, {}>>(
253+
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, {}>>,
254+
options?: ModelQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>,
255+
): ModelQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>;
260256

261-
useSuspenseFindMany<T extends FindManyArgs<Schema, Model, Options, {}, ExtResult>>(
262-
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, ExtResult>>,
263-
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>,
264-
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
257+
useSuspenseFindMany<T extends FindManyArgs<Schema, Model, Options, {}, {}>>(
258+
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, {}>>,
259+
options?: ModelSuspenseQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>,
260+
): ModelSuspenseQueryResult<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>;
265261

266-
useInfiniteFindMany<T extends FindManyArgs<Schema, Model, Options, {}, ExtResult>>(
267-
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, ExtResult>>,
268-
options?: ModelInfiniteQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>,
269-
): ModelInfiniteQueryResult<InfiniteData<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>>;
262+
useInfiniteFindMany<T extends FindManyArgs<Schema, Model, Options, {}, {}>>(
263+
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, {}>>,
264+
options?: ModelInfiniteQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>,
265+
): ModelInfiniteQueryResult<InfiniteData<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>>;
270266

271-
useSuspenseInfiniteFindMany<T extends FindManyArgs<Schema, Model, Options, {}, ExtResult>>(
272-
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, ExtResult>>,
273-
options?: ModelSuspenseInfiniteQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>,
274-
): ModelSuspenseInfiniteQueryResult<InfiniteData<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>>;
267+
useSuspenseInfiniteFindMany<T extends FindManyArgs<Schema, Model, Options, {}, {}>>(
268+
args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, {}, {}>>,
269+
options?: ModelSuspenseInfiniteQueryOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>,
270+
): ModelSuspenseInfiniteQueryResult<InfiniteData<SimplifiedPlainResult<Schema, Model, T, Options, {}>[]>>;
275271

276-
useCreate<T extends CreateArgs<Schema, Model, Options, {}, ExtResult>>(
277-
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>, T>,
278-
): ModelMutationModelResult<Schema, Model, T, false, Options, ExtResult>;
272+
useCreate<T extends CreateArgs<Schema, Model, Options, {}, {}>>(
273+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>, T>,
274+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
279275

280276
useCreateMany<T extends CreateManyArgs<Schema, Model>>(
281277
options?: ModelMutationOptions<BatchResult, T>,
282278
): ModelMutationResult<BatchResult, T>;
283279

284-
useCreateManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model, Options, {}, ExtResult>>(
285-
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[], T>,
286-
): ModelMutationModelResult<Schema, Model, T, true, Options, ExtResult>;
280+
useCreateManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model, Options, {}, {}>>(
281+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>[], T>,
282+
): ModelMutationModelResult<Schema, Model, T, true, Options>;
287283

288-
useUpdate<T extends UpdateArgs<Schema, Model, Options, {}, ExtResult>>(
289-
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>, T>,
290-
): ModelMutationModelResult<Schema, Model, T, false, Options, ExtResult>;
284+
useUpdate<T extends UpdateArgs<Schema, Model, Options, {}, {}>>(
285+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>, T>,
286+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
291287

292288
useUpdateMany<T extends UpdateManyArgs<Schema, Model, Options>>(
293289
options?: ModelMutationOptions<BatchResult, T>,
294290
): ModelMutationResult<BatchResult, T>;
295291

296-
useUpdateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model, Options, {}, ExtResult>>(
297-
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[], T>,
298-
): ModelMutationModelResult<Schema, Model, T, true, Options, ExtResult>;
292+
useUpdateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model, Options, {}, {}>>(
293+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>[], T>,
294+
): ModelMutationModelResult<Schema, Model, T, true, Options>;
299295

300-
useUpsert<T extends UpsertArgs<Schema, Model, Options, {}, ExtResult>>(
301-
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>, T>,
302-
): ModelMutationModelResult<Schema, Model, T, false, Options, ExtResult>;
296+
useUpsert<T extends UpsertArgs<Schema, Model, Options, {}, {}>>(
297+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>, T>,
298+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
303299

304-
useDelete<T extends DeleteArgs<Schema, Model, Options, {}, ExtResult>>(
305-
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>, T>,
306-
): ModelMutationModelResult<Schema, Model, T, false, Options, ExtResult>;
300+
useDelete<T extends DeleteArgs<Schema, Model, Options, {}, {}>>(
301+
options?: ModelMutationOptions<SimplifiedPlainResult<Schema, Model, T, Options, {}>, T>,
302+
): ModelMutationModelResult<Schema, Model, T, false, Options>;
307303

308304
useDeleteMany<T extends DeleteManyArgs<Schema, Model, Options>>(
309305
options?: ModelMutationOptions<BatchResult, T>,
@@ -361,11 +357,11 @@ export type ModelQueryHooks<
361357
* @param options Options for all queries originated from this hook.
362358
*/
363359
export function useClientQueries<
364-
Client extends SchemaDef | ClientContract<any, any, any, any, any>,
360+
SchemaOrClient extends SchemaDef | ClientContract<any, any, any, any, any>,
365361
>(
366-
schema: InferSchema<Client>,
362+
schema: InferSchema<SchemaOrClient>,
367363
options?: QueryContext,
368-
): ClientHooks<InferSchema<Client>, InferOptions<Client, InferSchema<Client>>, InferExtResult<Client> extends ExtResultBase<InferSchema<Client>> ? InferExtResult<Client> : {}> {
364+
): ClientHooks<InferSchema<SchemaOrClient>, InferOptions<SchemaOrClient, InferSchema<SchemaOrClient>>> {
369365
const result = Object.keys(schema.models).reduce(
370366
(acc, model) => {
371367
(acc as any)[lowerCaseFirst(model)] = useModelQueries(
@@ -432,8 +428,7 @@ export function useModelQueries<
432428
Schema extends SchemaDef,
433429
Model extends GetModels<Schema>,
434430
Options extends QueryOptions<Schema>,
435-
ExtResult extends ExtResultBase<Schema> = {},
436-
>(schema: Schema, model: Model, rootOptions?: QueryContext): ModelQueryHooks<Schema, Model, Options, ExtResult> {
431+
>(schema: Schema, model: Model, rootOptions?: QueryContext): ModelQueryHooks<Schema, Model, Options> {
437432
const modelDef = Object.values(schema.models).find((m) => m.name.toLowerCase() === model.toLowerCase());
438433
if (!modelDef) {
439434
throw new Error(`Model "${model}" not found in schema`);
@@ -543,7 +538,7 @@ export function useModelQueries<
543538
useSuspenseGroupBy: (args: any, options?: any) => {
544539
return useInternalSuspenseQuery(schema, modelName, 'groupBy', args, { ...rootOptions, ...options });
545540
},
546-
} as ModelQueryHooks<Schema, Model, Options, ExtResult>;
541+
} as ModelQueryHooks<Schema, Model, Options>;
547542
}
548543

549544
export function useInternalQuery<TQueryFnData, TData>(

0 commit comments

Comments
 (0)