|
1 | | -import { httpRequest } from '../http/request'; |
2 | 1 | import { ExtractPathParams } from '../http/types'; |
3 | 2 | import { Prettify, WithOptional } from '../types/utils'; |
| 3 | +import { HttpMutationBuilder } from './HttpMutationBuilder'; |
4 | 4 | import { QueryBuilder, QueryBuilderConfig } from './QueryBuilder'; |
5 | 5 | import { HttpBaseHeaders, HttpBaseParams, HttpBaseSearch, HttpBuilderTypeTemplate } from './types'; |
6 | 6 | import { PrettifyWithVars } from './types'; |
7 | | -import { mergeHttpVars } from './utils'; |
| 7 | +import { createHttpQueryFn, mergeHttpVars } from './utils'; |
8 | 8 |
|
9 | 9 | export class HttpQueryBuilder<T extends HttpBuilderTypeTemplate = HttpBuilderTypeTemplate> extends QueryBuilder<T> { |
10 | 10 | constructor(config?: WithOptional<QueryBuilderConfig<T>, 'queryFn'>) { |
11 | | - super({ |
12 | | - mergeVars: mergeHttpVars, |
13 | | - queryFn: async ({ queryKey, signal, meta, pageParam }) => { |
14 | | - const [vars] = queryKey || ['']; |
15 | | - const search = { ...vars?.search!, ...pageParam! }; |
16 | | - const params = { ...vars?.params! } as any; |
17 | | - |
18 | | - return httpRequest<T['data']>({ ...(vars as any), meta, vars, search, params, signal }); |
19 | | - }, |
20 | | - ...config, |
21 | | - }); |
| 11 | + const mergeVars = config?.mergeVars || mergeHttpVars; |
| 12 | + const queryFn = config?.queryFn || createHttpQueryFn<T>(mergeVars); |
| 13 | + super({ mergeVars, queryFn, ...config }); |
22 | 14 | } |
23 | 15 |
|
24 | 16 | withBody<TBody>(body?: TBody): HttpQueryBuilder<PrettifyWithVars<T, { body: TBody }>> { |
@@ -62,4 +54,5 @@ export class HttpQueryBuilder<T extends HttpBuilderTypeTemplate = HttpBuilderTyp |
62 | 54 | declare withData: <TData>() => HttpQueryBuilder<Prettify<T & { data: TData }>>; |
63 | 55 | declare withError: <TError>() => HttpQueryBuilder<Prettify<T & { error: TError }>>; |
64 | 56 | declare withVars: <TVars = T['vars']>(vars?: TVars) => HttpQueryBuilder<PrettifyWithVars<T, Partial<TVars>>>; |
| 57 | + declare asMutationBuilder: () => HttpMutationBuilder<T>; |
65 | 58 | } |
0 commit comments