1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00
unleash.unleash/src/lib/openapi/util/query-parameters.ts
2022-07-22 11:32:47 +02:00

38 lines
986 B
TypeScript

import { OpenAPIV3 } from 'openapi-types';
export type ParameterType = OpenAPIV3.NonArraySchemaObjectType;
export type ParameterDetails<U> = Readonly<{
description: string;
type: ParameterType;
required?: boolean;
default?: U;
enum?: Readonly<[U, ...U[]]>;
example?: U;
}>;
export type Parameters = {
[parameterName: string]: ParameterDetails<unknown>;
};
const toParamObject = (
name: string,
details: ParameterDetails<unknown>,
): OpenAPIV3.ParameterObject => ({
name,
example: details.example,
description: details.description,
required: details.required,
schema: {
type: details.type,
enum: details.enum as unknown as any[],
default: details.default,
},
in: 'query',
});
export const createQueryParameters = (params: {
[parameterName: string]: ParameterDetails<unknown>;
}): OpenAPIV3.ParameterObject[] =>
Object.entries(params).map(([name, deets]) => toParamObject(name, deets));