700 fix rest api issues (#11326)
fixes issues listed here https://github.com/twentyhq/core-team-issues/issues/700
This commit is contained in:
@ -7,7 +7,7 @@ const formatMessage = (error: BaseGraphQLError) => {
|
||||
? error.extensions.response?.error ||
|
||||
error.extensions.response ||
|
||||
error.message
|
||||
: error.error;
|
||||
: error.error || error.message;
|
||||
|
||||
formattedMessage = formattedMessage
|
||||
.replace(/"/g, "'")
|
||||
|
||||
@ -6,10 +6,14 @@ import { capitalize } from 'twenty-shared/utils';
|
||||
export class DeleteMetadataQueryFactory {
|
||||
create(objectNameSingular: string): string {
|
||||
const objectNameCapitalized = capitalize(objectNameSingular);
|
||||
const formattedObjectName =
|
||||
objectNameCapitalized === 'RelationMetadata'
|
||||
? 'Relation'
|
||||
: objectNameCapitalized;
|
||||
|
||||
return `
|
||||
mutation Delete${objectNameCapitalized}($input: DeleteOne${objectNameCapitalized}Input!) {
|
||||
deleteOne${objectNameCapitalized}(input: $input) {
|
||||
mutation Delete${objectNameCapitalized}($input: DeleteOne${formattedObjectName}Input!) {
|
||||
deleteOne${formattedObjectName}(input: $input) {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ export const fetchMetadataFields = (objectNamePlural: string) => {
|
||||
`;
|
||||
case 'fields':
|
||||
return fields;
|
||||
case 'relations':
|
||||
case 'relationMetadata':
|
||||
return `
|
||||
id
|
||||
relationType
|
||||
|
||||
@ -26,19 +26,19 @@ export const parseMetadataPath = (
|
||||
case 'fields':
|
||||
return {
|
||||
objectNameSingular: 'field',
|
||||
objectNamePlural: objectName,
|
||||
objectNamePlural: 'fields',
|
||||
id: queryAction[1],
|
||||
};
|
||||
case 'objects':
|
||||
return {
|
||||
objectNameSingular: 'object',
|
||||
objectNamePlural: objectName,
|
||||
objectNamePlural: 'objects',
|
||||
id: queryAction[1],
|
||||
};
|
||||
case 'relations':
|
||||
return {
|
||||
objectNameSingular: 'relation',
|
||||
objectNamePlural: objectName,
|
||||
objectNameSingular: 'relationMetadata',
|
||||
objectNamePlural: 'relationMetadata',
|
||||
id: queryAction[1],
|
||||
};
|
||||
default:
|
||||
@ -47,11 +47,14 @@ export const parseMetadataPath = (
|
||||
} else {
|
||||
switch (objectName) {
|
||||
case 'fields':
|
||||
return { objectNameSingular: 'field', objectNamePlural: objectName };
|
||||
return { objectNameSingular: 'field', objectNamePlural: 'fields' };
|
||||
case 'objects':
|
||||
return { objectNameSingular: 'object', objectNamePlural: objectName };
|
||||
return { objectNameSingular: 'object', objectNamePlural: 'objects' };
|
||||
case 'relations':
|
||||
return { objectNameSingular: 'relation', objectNamePlural: objectName };
|
||||
return {
|
||||
objectNameSingular: 'relationMetadata',
|
||||
objectNamePlural: 'relationMetadata',
|
||||
};
|
||||
default:
|
||||
return { objectNameSingular: '', objectNamePlural: '' };
|
||||
}
|
||||
|
||||
@ -7,14 +7,18 @@ import {
|
||||
Res,
|
||||
Patch,
|
||||
Put,
|
||||
UseGuards,
|
||||
} from '@nestjs/common';
|
||||
|
||||
import { Request, Response } from 'express';
|
||||
|
||||
import { RestApiMetadataService } from 'src/engine/api/rest/metadata/rest-api-metadata.service';
|
||||
import { cleanGraphQLResponse } from 'src/engine/api/rest/utils/clean-graphql-response.utils';
|
||||
import { JwtAuthGuard } from 'src/engine/guards/jwt-auth.guard';
|
||||
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
|
||||
|
||||
@Controller('rest/metadata/*')
|
||||
@UseGuards(JwtAuthGuard, WorkspaceAuthGuard)
|
||||
export class RestApiMetadataController {
|
||||
constructor(
|
||||
private readonly restApiMetadataService: RestApiMetadataService,
|
||||
|
||||
@ -174,16 +174,6 @@ export class OpenApiService {
|
||||
},
|
||||
} as OpenAPIV3_1.PathItemObject;
|
||||
path[`/${item.namePlural}/{id}`] = {
|
||||
get: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Find One ${item.nameSingular}`,
|
||||
parameters: [{ $ref: '#/components/parameters/idPath' }],
|
||||
responses: {
|
||||
'200': getFindOneResponse200(item),
|
||||
'400': { $ref: '#/components/responses/400' },
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
},
|
||||
},
|
||||
delete: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Delete One ${item.nameSingular}`,
|
||||
@ -196,6 +186,16 @@ export class OpenApiService {
|
||||
},
|
||||
},
|
||||
...(item.nameSingular !== 'relation' && {
|
||||
get: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Find One ${item.nameSingular}`,
|
||||
parameters: [{ $ref: '#/components/parameters/idPath' }],
|
||||
responses: {
|
||||
'200': getFindOneResponse200(item),
|
||||
'400': { $ref: '#/components/responses/400' },
|
||||
'401': { $ref: '#/components/responses/401' },
|
||||
},
|
||||
},
|
||||
patch: {
|
||||
tags: [item.namePlural],
|
||||
summary: `Update One ${item.nameSingular}`,
|
||||
|
||||
@ -10,6 +10,9 @@ export const getFindManyResponse200 = (
|
||||
item.nameSingular,
|
||||
)} for Response`;
|
||||
|
||||
const namePlural =
|
||||
item.namePlural === 'relations' ? 'relationMetadata' : item.namePlural;
|
||||
|
||||
return {
|
||||
description: 'Successful operation',
|
||||
content: {
|
||||
@ -20,7 +23,7 @@ export const getFindManyResponse200 = (
|
||||
data: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
[item.namePlural]: {
|
||||
[namePlural]: {
|
||||
type: 'array',
|
||||
items: {
|
||||
$ref: schemaRef,
|
||||
@ -86,7 +89,11 @@ export const getCreateOneResponse201 = (
|
||||
fromMetadata = false,
|
||||
) => {
|
||||
const one = fromMetadata ? 'One' : '';
|
||||
const schemaRef = `#/components/schemas/${capitalize(item.nameSingular)} for Response`;
|
||||
|
||||
const nameSingular =
|
||||
item.nameSingular === 'relation' ? 'relationMetadata' : item.nameSingular;
|
||||
|
||||
const schemaRef = `#/components/schemas/${capitalize(nameSingular)} for Response`;
|
||||
|
||||
return {
|
||||
description: 'Successful operation',
|
||||
@ -98,7 +105,7 @@ export const getCreateOneResponse201 = (
|
||||
data: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
[`create${one}${capitalize(item.nameSingular)}`]: {
|
||||
[`create${one}${capitalize(nameSingular)}`]: {
|
||||
$ref: schemaRef,
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user