Skip to content

Commit

Permalink
feat: make all params optional #858
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxim-Mazurok committed Jul 12, 2023
1 parent d92c33c commit 3eda646
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 28 deletions.
49 changes: 29 additions & 20 deletions packages/query/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,43 +1,44 @@
import {
camel,
ClientBuilder,
ClientDependenciesBuilder,
ClientHeaderBuilder,
generateFormDataAndUrlEncodedFunction,
generateMutator,
generateMutatorConfig,
generateMutatorRequestOptions,
generateOptions,
generateVerbImports,
GeneratorDependency,
GeneratorMutator,
GeneratorOptions,
GeneratorVerbOptions,
GetterParams,
GetterProps,
GetterPropType,
GetterProps,
GetterResponse,
isObject,
isSyntheticDefaultImportsAllow,
mergeDeep,
OutputClient,
OutputClientFunc,
PackageJson,
pascal,
QueryOptions,
stringify,
toObjectString,
Verbs,
VERBS_WITH_BODY,
Verbs,
camel,
generateFormDataAndUrlEncodedFunction,
generateMutator,
generateMutatorConfig,
generateMutatorRequestOptions,
generateOptions,
generateVerbImports,
getRouteAsArray,
isObject,
isSyntheticDefaultImportsAllow,
jsDoc,
mergeDeep,
pascal,
stringify,
toObjectString,
} from '@orval/core';
import omitBy from 'lodash.omitby';
import {
isVue,
normalizeQueryOptions,
vueMakeParamsOptional,
vueMakeRouteReactive,
vueWrapTypeWithMaybeRef,
isVue,
} from './utils';

const AXIOS_DEPENDENCIES: GeneratorDependency[] = [
Expand Down Expand Up @@ -340,7 +341,9 @@ const generateQueryRequestFunction = (
: toObjectString(props, 'implementation');

if (isVue(outputClient)) {
propsImplementation = vueWrapTypeWithMaybeRef(propsImplementation);
propsImplementation = vueWrapTypeWithMaybeRef(
vueMakeParamsOptional(propsImplementation, props),
);
}

const requestOptions = isRequestOptions
Expand Down Expand Up @@ -405,7 +408,9 @@ const generateQueryRequestFunction = (
});

const queryProps = isVue(outputClient)
? vueWrapTypeWithMaybeRef(toObjectString(props, 'implementation'))
? vueWrapTypeWithMaybeRef(
vueMakeParamsOptional(toObjectString(props, 'implementation'), props),
)
: toObjectString(props, 'implementation');

return `export const ${operationName} = (\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${
Expand Down Expand Up @@ -727,7 +732,9 @@ const generateQueryImplementation = ({
doc?: string;
}) => {
const queryProps = isVue(outputClient)
? vueWrapTypeWithMaybeRef(toObjectString(props, 'implementation'))
? vueWrapTypeWithMaybeRef(
vueMakeParamsOptional(toObjectString(props, 'implementation'), props),
)
: toObjectString(props, 'implementation');

const httpFunctionProps = queryParam
Expand Down Expand Up @@ -1003,7 +1010,9 @@ const generateQueryHook = async (
);

if (isVue(outputClient)) {
queryKeyProps = vueWrapTypeWithMaybeRef(queryKeyProps);
queryKeyProps = vueWrapTypeWithMaybeRef(
vueMakeParamsOptional(queryKeyProps, props),
);
}

const routeString = isVue(outputClient)
Expand Down
32 changes: 31 additions & 1 deletion packages/query/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import {
OutputClient,
OutputClientFunc,
upath,
GetterProps,
GetterPropType,
} from '@orval/core';
import chalk from 'chalk';

Expand Down Expand Up @@ -87,7 +89,35 @@ export function vueWrapTypeWithMaybeRef(input: string): string {
.map((param) => {
const [paramName, paramType] = param.split(':');
if (paramType) {
return `${paramName}: MaybeRef<${paramType.trim()} | undefined | null>,`;
return `${paramName}: MaybeRef<${paramType.trim()}>,`;
} else {
return `${param},`;
}
})
.join('')
.replace(',,', ',');

return output;
}

/**
* Make params optional
*/
export function vueMakeParamsOptional(
input: string,
props: GetterProps,
): string {
if (!input.includes(',')) return input;

const output = input
.split(',')
.map((param) => {
const [paramName, paramType] = param.split(':');
if (
paramType &&
props.find((x) => x.name === paramName)?.type === GetterPropType.PARAM
) {
return `${paramName}: ${paramType.trim()} | undefined | null,`;
} else {
return `${param},`;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;
* @summary List all pets
*/
export const listPets = (
params?: MaybeRef<ListPetsParams | undefined | null>,
params?: MaybeRef<ListPetsParams>,
version = 1,
signal?: AbortSignal,
) => {
Expand All @@ -47,15 +47,15 @@ export const listPets = (
};

export const getListPetsQueryKey = (
params?: MaybeRef<ListPetsParams | undefined | null>,
params?: MaybeRef<ListPetsParams>,
version = 1,
) => ['v', version, 'pets', ...(params ? [params] : [])] as const;

export const getListPetsInfiniteQueryOptions = <
TData = Awaited<ReturnType<typeof listPets>>,
TError = Error,
>(
params?: MaybeRef<ListPetsParams | undefined | null>,
params?: MaybeRef<ListPetsParams>,
version = 1,
options?: {
query?: UseInfiniteQueryOptions<
Expand Down Expand Up @@ -93,7 +93,7 @@ export const useListPetsInfinite = <
TData = Awaited<ReturnType<typeof listPets>>,
TError = Error,
>(
params?: MaybeRef<ListPetsParams | undefined | null>,
params?: MaybeRef<ListPetsParams>,
version = 1,
options?: {
query?: UseInfiniteQueryOptions<
Expand Down Expand Up @@ -123,7 +123,7 @@ export const getListPetsQueryOptions = <
TData = Awaited<ReturnType<typeof listPets>>,
TError = Error,
>(
params?: MaybeRef<ListPetsParams | undefined | null>,
params?: MaybeRef<ListPetsParams>,
version = 1,
options?: {
query?: UseQueryOptions<
Expand Down Expand Up @@ -156,7 +156,7 @@ export const useListPets = <
TData = Awaited<ReturnType<typeof listPets>>,
TError = Error,
>(
params?: MaybeRef<ListPetsParams | undefined | null>,
params?: MaybeRef<ListPetsParams>,
version = 1,
options?: {
query?: UseQueryOptions<
Expand All @@ -181,7 +181,7 @@ export const useListPets = <
* @summary Create a pet
*/
export const createPets = (
createPetsBody: MaybeRef<CreatePetsBody | undefined | null>,
createPetsBody: MaybeRef<CreatePetsBody>,
version = 1,
) => {
return customInstance<Pet>({
Expand Down

0 comments on commit 3eda646

Please sign in to comment.