From c9ce6a60673591cf5a262b0b574bf77900c0169a Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Fri, 22 Jul 2022 09:52:44 +0200 Subject: [PATCH] Feat: add query params to state --- .../openapi/spec/export-parameters-schema.ts | 24 +++++++++++++++---- .../openapi/util/request-parameters.test.ts | 3 ++- src/lib/openapi/util/request-parameters.ts | 2 ++ src/lib/routes/admin-api/state.ts | 6 ++--- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/lib/openapi/spec/export-parameters-schema.ts b/src/lib/openapi/spec/export-parameters-schema.ts index a9fa7bbe11..683a92526a 100644 --- a/src/lib/openapi/spec/export-parameters-schema.ts +++ b/src/lib/openapi/spec/export-parameters-schema.ts @@ -1,31 +1,47 @@ import { FromSchema } from 'json-schema-to-ts'; +import { Parameters } from '../util/request-parameters'; -const exportParameters = { +export const exportParameters: Parameters = { format: { type: 'string', enum: ['json', 'yaml'], default: 'json', - description: '', + description: 'Desired export format. Must be either `json` or `yaml`.', }, download: { type: 'boolean', - default: 'false', - description: '', + default: false, + description: 'Whether exported data should be downloaded as a file.', }, strategies: { type: 'boolean', + default: true, + description: + 'Whether strategies should be included in the exported data.', }, featureToggles: { type: 'boolean', + default: true, + description: + 'Whether feature toggles should be included in the exported data.', }, projects: { type: 'boolean', + default: true, + description: + 'Whether projects should be included in the exported data.', }, tags: { type: 'boolean', + default: true, + description: + 'Whether tag types, tags, and feature_tags should be included in the exported data.', }, environments: { type: 'boolean', + default: true, + description: + 'Whether environments should be included in the exported data.', }, }; diff --git a/src/lib/openapi/util/request-parameters.test.ts b/src/lib/openapi/util/request-parameters.test.ts index 85c11c58e4..c59d665608 100644 --- a/src/lib/openapi/util/request-parameters.test.ts +++ b/src/lib/openapi/util/request-parameters.test.ts @@ -52,7 +52,8 @@ describe('request parameter utils', () => { result.description === details.description && result.example === details.example && schema.enum === details.enum && - schema.default === details.default + schema.default === details.default && + result.required === details.required ); }, ), diff --git a/src/lib/openapi/util/request-parameters.ts b/src/lib/openapi/util/request-parameters.ts index 024e9c9060..2915b17aff 100644 --- a/src/lib/openapi/util/request-parameters.ts +++ b/src/lib/openapi/util/request-parameters.ts @@ -5,6 +5,7 @@ export type ParameterType = OpenAPIV3.NonArraySchemaObjectType; export type ParameterDetails = { description: string; type: ParameterType; + required?: boolean; default?: U; enum?: [U, ...U[]]; example?: U; @@ -21,6 +22,7 @@ export const toParamObject = ( name, example: details.example, description: details.description, + required: details.required, schema: { type: details.type, enum: details.enum, diff --git a/src/lib/routes/admin-api/state.ts b/src/lib/routes/admin-api/state.ts index 95936a4bf3..328d5e7f53 100644 --- a/src/lib/routes/admin-api/state.ts +++ b/src/lib/routes/admin-api/state.ts @@ -15,11 +15,11 @@ import { OpenApiService } from '../../services/openapi-service'; import { createRequestSchema } from '../../openapi/util/create-request-schema'; import { createResponseSchema } from '../../openapi/util/create-response-schema'; import { - exportParametersSchema, + exportParameters, ExportParametersSchema, } from '../../openapi/spec/export-parameters-schema'; import { emptyResponse } from '../../openapi/util/standard-responses'; -import { createRequestParameters } from 'lib/openapi/util/request-parameters'; +import { createRequestParameters } from '../../openapi/util/request-parameters'; const upload = multer({ limits: { fileSize: 5242880 } }); const paramToBool = (param, def) => { @@ -79,7 +79,7 @@ class StateController extends Controller { responses: { 200: createResponseSchema('stateSchema'), }, - // parameters: createRequestParameters(exportParametersSchema), + parameters: createRequestParameters(exportParameters), }), ], });