5581 get httpsapitwentycomrestmetadata relations not working (#5867)
Filtering relations is not allowed (see`packages/twenty-server/src/engine/metadata-modules/relation-metadata/dtos/relation-metadata.dto.ts`) so we remove filtering for find many relation we also fixed some bug in result structure and metadata open-api schema
This commit is contained in:
@ -24,28 +24,28 @@ export class RestApiMetadataController {
|
|||||||
async handleApiGet(@Req() request: Request, @Res() res: Response) {
|
async handleApiGet(@Req() request: Request, @Res() res: Response) {
|
||||||
const result = await this.restApiMetadataService.get(request);
|
const result = await this.restApiMetadataService.get(request);
|
||||||
|
|
||||||
res.status(200).send(cleanGraphQLResponse(result.data));
|
res.status(200).send(cleanGraphQLResponse(result.data.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Delete()
|
@Delete()
|
||||||
async handleApiDelete(@Req() request: Request, @Res() res: Response) {
|
async handleApiDelete(@Req() request: Request, @Res() res: Response) {
|
||||||
const result = await this.restApiMetadataService.delete(request);
|
const result = await this.restApiMetadataService.delete(request);
|
||||||
|
|
||||||
res.status(200).send(cleanGraphQLResponse(result.data));
|
res.status(200).send(cleanGraphQLResponse(result.data.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post()
|
@Post()
|
||||||
async handleApiPost(@Req() request: Request, @Res() res: Response) {
|
async handleApiPost(@Req() request: Request, @Res() res: Response) {
|
||||||
const result = await this.restApiMetadataService.create(request);
|
const result = await this.restApiMetadataService.create(request);
|
||||||
|
|
||||||
res.status(201).send(cleanGraphQLResponse(result.data));
|
res.status(201).send(cleanGraphQLResponse(result.data.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Patch()
|
@Patch()
|
||||||
async handleApiPatch(@Req() request: Request, @Res() res: Response) {
|
async handleApiPatch(@Req() request: Request, @Res() res: Response) {
|
||||||
const result = await this.restApiMetadataService.update(request);
|
const result = await this.restApiMetadataService.update(request);
|
||||||
|
|
||||||
res.status(200).send(cleanGraphQLResponse(result.data));
|
res.status(200).send(cleanGraphQLResponse(result.data.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
// This endpoint is not documented in the OpenAPI schema.
|
// This endpoint is not documented in the OpenAPI schema.
|
||||||
@ -55,6 +55,6 @@ export class RestApiMetadataController {
|
|||||||
async handleApiPut(@Req() request: Request, @Res() res: Response) {
|
async handleApiPut(@Req() request: Request, @Res() res: Response) {
|
||||||
const result = await this.restApiMetadataService.update(request);
|
const result = await this.restApiMetadataService.update(request);
|
||||||
|
|
||||||
res.status(200).send(cleanGraphQLResponse(result.data));
|
res.status(200).send(cleanGraphQLResponse(result.data.data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -113,12 +113,18 @@ export class RestApiMetadataService {
|
|||||||
generateFindManyQuery(objectNameSingular: string, objectNamePlural: string) {
|
generateFindManyQuery(objectNameSingular: string, objectNamePlural: string) {
|
||||||
const fields = this.fetchMetadataFields(objectNamePlural);
|
const fields = this.fetchMetadataFields(objectNamePlural);
|
||||||
|
|
||||||
|
let filterType = '';
|
||||||
|
let filterValue = '';
|
||||||
|
|
||||||
|
if (objectNamePlural !== 'relations') {
|
||||||
|
filterType = `($filter: ${objectNameSingular}Filter)`;
|
||||||
|
filterValue = 'filter: $filter,';
|
||||||
|
}
|
||||||
|
|
||||||
return `
|
return `
|
||||||
query FindMany${capitalize(objectNamePlural)}(
|
query FindMany${capitalize(objectNamePlural)}${filterType} {
|
||||||
$filter: ${objectNameSingular}Filter,
|
|
||||||
) {
|
|
||||||
${objectNamePlural}(
|
${objectNamePlural}(
|
||||||
filter: $filter,
|
${filterValue}
|
||||||
paging: { first: 1000 }
|
paging: { first: 1000 }
|
||||||
) {
|
) {
|
||||||
edges {
|
edges {
|
||||||
|
|||||||
@ -133,7 +133,10 @@ export class OpenApiService {
|
|||||||
get: {
|
get: {
|
||||||
tags: [item.namePlural],
|
tags: [item.namePlural],
|
||||||
summary: `Find Many ${item.namePlural}`,
|
summary: `Find Many ${item.namePlural}`,
|
||||||
parameters: [{ $ref: '#/components/parameters/filter' }],
|
parameters:
|
||||||
|
item.namePlural !== 'relations'
|
||||||
|
? [{ $ref: '#/components/parameters/filter' }]
|
||||||
|
: undefined,
|
||||||
responses: {
|
responses: {
|
||||||
'200': getFindManyResponse200(item),
|
'200': getFindManyResponse200(item),
|
||||||
'400': { $ref: '#/components/responses/400' },
|
'400': { $ref: '#/components/responses/400' },
|
||||||
|
|||||||
@ -240,7 +240,7 @@ export const computeMetadataSchemaComponents = (
|
|||||||
(schemas, item) => {
|
(schemas, item) => {
|
||||||
switch (item.nameSingular) {
|
switch (item.nameSingular) {
|
||||||
case 'object': {
|
case 'object': {
|
||||||
schemas[`${capitalize(item.nameSingular)}`] = {
|
schemas[`${capitalize(item.nameSingular)} with Relations`] = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
description: `An object`,
|
description: `An object`,
|
||||||
properties: {
|
properties: {
|
||||||
@ -290,7 +290,7 @@ export const computeMetadataSchemaComponents = (
|
|||||||
return schemas;
|
return schemas;
|
||||||
}
|
}
|
||||||
case 'field': {
|
case 'field': {
|
||||||
schemas[`${capitalize(item.nameSingular)}`] = {
|
schemas[`${capitalize(item.nameSingular)} with Relations`] = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
description: `A field`,
|
description: `A field`,
|
||||||
properties: {
|
properties: {
|
||||||
@ -358,7 +358,7 @@ export const computeMetadataSchemaComponents = (
|
|||||||
return schemas;
|
return schemas;
|
||||||
}
|
}
|
||||||
case 'relation': {
|
case 'relation': {
|
||||||
schemas[`${capitalize(item.nameSingular)}`] = {
|
schemas[`${capitalize(item.nameSingular)} with Relations`] = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
description: 'A relation',
|
description: 'A relation',
|
||||||
properties: {
|
properties: {
|
||||||
|
|||||||
Reference in New Issue
Block a user