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:
martmull
2024-06-18 18:55:13 +02:00
committed by GitHub
parent dbaa787d19
commit 6fd8dab552
87 changed files with 701 additions and 567 deletions

View File

@ -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(),

View File

@ -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', () => {

View File

@ -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: {

View File

@ -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,
},
};
};

View File

@ -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' },

View File

@ -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' : ''
}`,
},
},
},