5582 get httpsapitwentycomrestmetadata objects filters dont work (#5906)
- Remove filters from metadata rest api - add limite before and after parameters for metadata - remove update from metadata relations - fix typing issue - fix naming - fix before parameter --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
@ -133,12 +133,13 @@ export class OpenApiService {
|
||||
get: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Find Many ${item.namePlural}`,
|
||||
parameters:
|
||||
item.namePlural !== 'relations'
|
||||
? [{ $ref: '#/components/parameters/filter' }]
|
||||
: undefined,
|
||||
parameters: [
|
||||
{ $ref: '#/components/parameters/limit' },
|
||||
{ $ref: '#/components/parameters/startingAfter' },
|
||||
{ $ref: '#/components/parameters/endingBefore' },
|
||||
],
|
||||
responses: {
|
||||
'200': getFindManyResponse200(item),
|
||||
'200': getFindManyResponse200(item, true),
|
||||
'400': { $ref: '#/components/responses/400' },
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
},
|
||||
@ -161,7 +162,7 @@ export class OpenApiService {
|
||||
summary: `Find One ${item.nameSingular}`,
|
||||
parameters: [{ $ref: '#/components/parameters/idPath' }],
|
||||
responses: {
|
||||
'200': getFindOneResponse200(item),
|
||||
'200': getFindOneResponse200(item, true),
|
||||
'400': { $ref: '#/components/responses/400' },
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
},
|
||||
@ -177,18 +178,20 @@ export class OpenApiService {
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
},
|
||||
},
|
||||
patch: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Update One ${item.namePlural}`,
|
||||
operationId: `updateOne${capitalize(item.nameSingular)}`,
|
||||
parameters: [{ $ref: '#/components/parameters/idPath' }],
|
||||
requestBody: getRequestBody(capitalize(item.nameSingular)),
|
||||
responses: {
|
||||
'200': getUpdateOneResponse200(item, true),
|
||||
'400': { $ref: '#/components/responses/400' },
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
...(item.nameSingular !== 'relation' && {
|
||||
patch: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Update One ${item.nameSingular}`,
|
||||
operationId: `updateOne${capitalize(item.nameSingular)}`,
|
||||
parameters: [{ $ref: '#/components/parameters/idPath' }],
|
||||
requestBody: getRequestBody(capitalize(item.nameSingular)),
|
||||
responses: {
|
||||
'200': getUpdateOneResponse200(item, true),
|
||||
'400': { $ref: '#/components/responses/400' },
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
} as OpenAPIV3_1.PathItemObject;
|
||||
|
||||
return path;
|
||||
@ -197,7 +200,7 @@ export class OpenApiService {
|
||||
schema.components = {
|
||||
...schema.components, // components.securitySchemes is defined in base Schema
|
||||
schemas: computeMetadataSchemaComponents(metadata),
|
||||
parameters: computeParameterComponents(),
|
||||
parameters: computeParameterComponents(true),
|
||||
responses: {
|
||||
'400': get400ErrorResponses(),
|
||||
'401': get401ErrorResponses(),
|
||||
|
||||
@ -9,10 +9,10 @@ import {
|
||||
computeOrderByParameters,
|
||||
computeStartingAfterParameters,
|
||||
} from 'src/engine/core-modules/open-api/utils/parameters.utils';
|
||||
import { DEFAULT_ORDER_DIRECTION } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/order-by-input.factory';
|
||||
import { FilterComparators } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/filter-utils/parse-base-filter.utils';
|
||||
import { Conjunctions } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/filter-utils/parse-filter.utils';
|
||||
import { DEFAULT_CONJUNCTION } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/filter-utils/add-default-conjunction.utils';
|
||||
import { DEFAULT_ORDER_DIRECTION } from 'src/engine/api/rest/input-factories/order-by-input.factory';
|
||||
import { FilterComparators } from 'src/engine/api/rest/core/query-builder/utils/filter-utils/parse-base-filter.utils';
|
||||
import { Conjunctions } from 'src/engine/api/rest/core/query-builder/utils/filter-utils/parse-filter.utils';
|
||||
import { DEFAULT_CONJUNCTION } from 'src/engine/api/rest/core/query-builder/utils/filter-utils/add-default-conjunction.utils';
|
||||
|
||||
describe('computeParameters', () => {
|
||||
describe('computeLimit', () => {
|
||||
|
||||
@ -218,10 +218,9 @@ export const computeSchemaComponents = (
|
||||
);
|
||||
};
|
||||
|
||||
export const computeParameterComponents = (): Record<
|
||||
string,
|
||||
OpenAPIV3_1.ParameterObject
|
||||
> => {
|
||||
export const computeParameterComponents = (
|
||||
fromMetadata = false,
|
||||
): Record<string, OpenAPIV3_1.ParameterObject> => {
|
||||
return {
|
||||
idPath: computeIdPathParameter(),
|
||||
startingAfter: computeStartingAfterParameters(),
|
||||
@ -229,7 +228,7 @@ export const computeParameterComponents = (): Record<
|
||||
filter: computeFilterParameters(),
|
||||
depth: computeDepthParameters(),
|
||||
orderBy: computeOrderByParameters(),
|
||||
limit: computeLimitParameters(),
|
||||
limit: computeLimitParameters(fromMetadata),
|
||||
};
|
||||
};
|
||||
|
||||
@ -240,7 +239,7 @@ export const computeMetadataSchemaComponents = (
|
||||
(schemas, item) => {
|
||||
switch (item.nameSingular) {
|
||||
case 'object': {
|
||||
schemas[`${capitalize(item.nameSingular)} with Relations`] = {
|
||||
schemas[`${capitalize(item.nameSingular)}`] = {
|
||||
type: 'object',
|
||||
description: `An object`,
|
||||
properties: {
|
||||
@ -290,7 +289,7 @@ export const computeMetadataSchemaComponents = (
|
||||
return schemas;
|
||||
}
|
||||
case 'field': {
|
||||
schemas[`${capitalize(item.nameSingular)} with Relations`] = {
|
||||
schemas[`${capitalize(item.nameSingular)}`] = {
|
||||
type: 'object',
|
||||
description: `A field`,
|
||||
properties: {
|
||||
@ -358,7 +357,7 @@ export const computeMetadataSchemaComponents = (
|
||||
return schemas;
|
||||
}
|
||||
case 'relation': {
|
||||
schemas[`${capitalize(item.nameSingular)} with Relations`] = {
|
||||
schemas[`${capitalize(item.nameSingular)}`] = {
|
||||
type: 'object',
|
||||
description: 'A relation',
|
||||
properties: {
|
||||
|
||||
@ -2,12 +2,14 @@ import { OpenAPIV3_1 } from 'openapi-types';
|
||||
|
||||
import { OrderByDirection } from 'src/engine/api/graphql/workspace-query-builder/interfaces/record.interface';
|
||||
|
||||
import { FilterComparators } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/filter-utils/parse-base-filter.utils';
|
||||
import { Conjunctions } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/filter-utils/parse-filter.utils';
|
||||
import { DEFAULT_ORDER_DIRECTION } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/order-by-input.factory';
|
||||
import { DEFAULT_CONJUNCTION } from 'src/engine/api/rest/rest-api-core-query-builder/factories/input-factories/filter-utils/add-default-conjunction.utils';
|
||||
import { FilterComparators } from 'src/engine/api/rest/core/query-builder/utils/filter-utils/parse-base-filter.utils';
|
||||
import { Conjunctions } from 'src/engine/api/rest/core/query-builder/utils/filter-utils/parse-filter.utils';
|
||||
import { DEFAULT_ORDER_DIRECTION } from 'src/engine/api/rest/input-factories/order-by-input.factory';
|
||||
import { DEFAULT_CONJUNCTION } from 'src/engine/api/rest/core/query-builder/utils/filter-utils/add-default-conjunction.utils';
|
||||
|
||||
export const computeLimitParameters = (): OpenAPIV3_1.ParameterObject => {
|
||||
export const computeLimitParameters = (
|
||||
fromMetadata = false,
|
||||
): OpenAPIV3_1.ParameterObject => {
|
||||
return {
|
||||
name: 'limit',
|
||||
in: 'query',
|
||||
@ -16,8 +18,8 @@ export const computeLimitParameters = (): OpenAPIV3_1.ParameterObject => {
|
||||
schema: {
|
||||
type: 'integer',
|
||||
minimum: 0,
|
||||
maximum: 60,
|
||||
default: 60,
|
||||
maximum: fromMetadata ? 1000 : 60,
|
||||
default: fromMetadata ? 1000 : 60,
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@ -105,7 +105,7 @@ export const computeSingleResultPath = (
|
||||
},
|
||||
patch: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Update One ${item.namePlural}`,
|
||||
summary: `Update One ${item.nameSingular}`,
|
||||
operationId: `UpdateOne${capitalize(item.nameSingular)}`,
|
||||
parameters: [
|
||||
{ $ref: '#/components/parameters/idPath' },
|
||||
|
||||
@ -3,6 +3,7 @@ import { capitalize } from 'src/utils/capitalize';
|
||||
|
||||
export const getFindManyResponse200 = (
|
||||
item: Pick<ObjectMetadataEntity, 'nameSingular' | 'namePlural'>,
|
||||
fromMetadata = false,
|
||||
) => {
|
||||
return {
|
||||
description: 'Successful operation',
|
||||
@ -19,7 +20,7 @@ export const getFindManyResponse200 = (
|
||||
items: {
|
||||
$ref: `#/components/schemas/${capitalize(
|
||||
item.nameSingular,
|
||||
)} with Relations`,
|
||||
)}${!fromMetadata ? ' with Relations' : ''}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
@ -32,9 +33,11 @@ export const getFindManyResponse200 = (
|
||||
endCursor: { type: 'string' },
|
||||
},
|
||||
},
|
||||
totalCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
...(!fromMetadata && {
|
||||
totalCount: {
|
||||
type: 'integer',
|
||||
},
|
||||
}),
|
||||
},
|
||||
example: {
|
||||
data: {
|
||||
@ -59,6 +62,7 @@ export const getFindManyResponse200 = (
|
||||
|
||||
export const getFindOneResponse200 = (
|
||||
item: Pick<ObjectMetadataEntity, 'nameSingular'>,
|
||||
fromMetadata = false,
|
||||
) => {
|
||||
return {
|
||||
description: 'Successful operation',
|
||||
@ -71,9 +75,9 @@ export const getFindOneResponse200 = (
|
||||
type: 'object',
|
||||
properties: {
|
||||
[item.nameSingular]: {
|
||||
$ref: `#/components/schemas/${capitalize(
|
||||
item.nameSingular,
|
||||
)} with Relations`,
|
||||
$ref: `#/components/schemas/${capitalize(item.nameSingular)}${
|
||||
!fromMetadata ? ' with Relations' : ''
|
||||
}`,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user