Skip to content

Revert "Revert "[4/n]: migrate the RESTAPI GET /rest/* to use TwentyORM direc…" #11349

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 41 commits into from
May 12, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ddfd6b6
Revert "Revert "[4/n]: migrate the RESTAPI GET /rest/* to use TwentyO…
martmull Apr 2, 2025
aff7cce
Fix issues
martmull Apr 2, 2025
d8adc58
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 9, 2025
9d9878e
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 17, 2025
c5a7963
WIP: martin's code
martmull Apr 17, 2025
74f693f
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 18, 2025
91e7c2d
Fix imports
martmull Apr 18, 2025
d5d8b3d
Fix find one test
martmull Apr 18, 2025
7d09c2e
WIP: Fix find many test
martmull Apr 18, 2025
9fb6090
Add missing tests cases for findMany
martmull Apr 22, 2025
2df4830
Fix tests
martmull Apr 22, 2025
a8e1913
WIP: improve code
martmull Apr 22, 2025
23d315a
Fix depth parameter
martmull Apr 22, 2025
6287f90
Improve style
martmull Apr 22, 2025
6d04f6c
Fix tests
martmull Apr 22, 2025
b315134
Fix test for depth 1
martmull Apr 23, 2025
0375dfe
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 23, 2025
8504207
Update test so it works with composite fields
martmull Apr 23, 2025
7218abd
Add test on totalCount
martmull Apr 24, 2025
7e11c06
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 24, 2025
f3ec1b2
Improve filters
martmull Apr 24, 2025
123f585
Add test on delete with cascade relation
martmull Apr 24, 2025
93b23e3
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 24, 2025
6a629ec
Add beforeAll table cleaning
martmull Apr 25, 2025
b1574a5
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 25, 2025
9f6c2da
Add missing tests cases for depth parameter
martmull Apr 25, 2025
27d65bf
Fix test
martmull Apr 25, 2025
29aba4a
Fix test
martmull Apr 25, 2025
75dd866
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull Apr 28, 2025
d922387
Small change
martmull Apr 29, 2025
003535f
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull May 6, 2025
3bf167e
Fix depth = 2 parameter
martmull May 6, 2025
6fc27c4
Code review returns: greptile
martmull May 6, 2025
6a6b78d
Fix orderBy
martmull May 7, 2025
d024f13
Fix cache conflicts betwenn dev environments
martmull May 7, 2025
ca9c5ba
Merge branch 'main' into revert-11344-revert-rest-api-get
martmull May 7, 2025
c1bf418
Code review returns: Weiko
martmull May 7, 2025
33b512e
Remove useless stuff
martmull May 8, 2025
5927847
Split v2 service in multiple resolvers
martmull May 8, 2025
f16ccf4
Create a dedicated module for core rest api
martmull May 8, 2025
74e1d64
Code review returns: Weiko 2
martmull May 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/twenty-server/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const MIGRATED_REST_METHODS = [
RequestMethod.POST,
RequestMethod.PATCH,
RequestMethod.PUT,
RequestMethod.GET,
];

@Module({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
} from 'typeorm';

import { ObjectRecordFilter } from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface';
import { FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface';

import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map';

Expand All @@ -16,14 +15,10 @@ export class GraphqlQueryFilterConditionParser {
private fieldMetadataMapByName: FieldMetadataMap;
private queryFilterFieldParser: GraphqlQueryFilterFieldParser;

constructor(
fieldMetadataMapByName: FieldMetadataMap,
featureFlagsMap: FeatureFlagMap,
) {
constructor(fieldMetadataMapByName: FieldMetadataMap) {
this.fieldMetadataMapByName = fieldMetadataMapByName;
this.queryFilterFieldParser = new GraphqlQueryFilterFieldParser(
this.fieldMetadataMapByName,
featureFlagsMap,
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { WhereExpressionBuilder } from 'typeorm';
import { capitalize } from 'twenty-shared/utils';

import { FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';

import {
Expand All @@ -18,14 +17,9 @@ const ARRAY_OPERATORS = ['in', 'contains', 'notContains'];

export class GraphqlQueryFilterFieldParser {
private fieldMetadataMapByName: FieldMetadataMap;
private featureFlagsMap: FeatureFlagMap;

constructor(
fieldMetadataMapByName: FieldMetadataMap,
featureFlagsMap: FeatureFlagMap,
) {
constructor(fieldMetadataMapByName: FieldMetadataMap) {
this.fieldMetadataMapByName = fieldMetadataMapByName;
this.featureFlagsMap = featureFlagsMap;
}

public parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import {
ObjectRecordOrderBy,
OrderByDirection,
} from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface';
import { FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';

import {
Expand All @@ -18,14 +17,9 @@ import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspac

export class GraphqlQueryOrderFieldParser {
private fieldMetadataMapByName: FieldMetadataMap;
private featureFlagsMap: FeatureFlagMap;

constructor(
fieldMetadataMapByName: FieldMetadataMap,
featureFlagsMap: FeatureFlagMap,
) {
constructor(fieldMetadataMapByName: FieldMetadataMap) {
this.fieldMetadataMapByName = fieldMetadataMapByName;
this.featureFlagsMap = featureFlagsMap;
}

parse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,9 @@ export class GraphqlQueryParser {
this.featureFlagsMap = featureFlagsMap;
this.filterConditionParser = new GraphqlQueryFilterConditionParser(
this.fieldMetadataMapByName,
featureFlagsMap,
);
this.orderFieldParser = new GraphqlQueryOrderFieldParser(
this.fieldMetadataMapByName,
featureFlagsMap,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,40 +22,35 @@ import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';

@Controller('rest/*')
@UseGuards(JwtAuthGuard, WorkspaceAuthGuard)
@UseFilters(RestApiExceptionFilter)
export class RestApiCoreController {
constructor(
private readonly restApiCoreService: RestApiCoreService,
private readonly restApiCoreServiceV2: RestApiCoreServiceV2,
) {}

@Post('/duplicates')
@UseFilters(RestApiExceptionFilter)
async handleApiFindDuplicates(@Req() request: Request, @Res() res: Response) {
const result = await this.restApiCoreService.findDuplicates(request);

res.status(200).send(cleanGraphQLResponse(result.data.data));
}

@Get()
@UseFilters(RestApiExceptionFilter)
async handleApiGet(@Req() request: Request, @Res() res: Response) {
const result = await this.restApiCoreService.get(request);
const result = await this.restApiCoreServiceV2.get(request);

res.status(200).send(cleanGraphQLResponse(result.data.data));
res.status(200).send(result);
}

@Delete()
// We should move this exception filter to RestApiCoreController class level
// when all endpoints are migrated to v2
@UseFilters(RestApiExceptionFilter)
async handleApiDelete(@Req() request: Request, @Res() res: Response) {
const result = await this.restApiCoreServiceV2.delete(request);

res.status(200).send(result);
}

@Post()
@UseFilters(RestApiExceptionFilter)
async handleApiPost(@Req() request: Request, @Res() res: Response) {
const result = await this.restApiCoreServiceV2.createOne(request);

Expand All @@ -74,7 +69,6 @@ export class RestApiCoreController {
// We keep it to avoid a breaking change since it initially used PUT instead of PATCH,
// and because the PUT verb is often used as a PATCH.
@Put()
@UseFilters(RestApiExceptionFilter)
async handleApiPut(@Req() request: Request, @Res() res: Response) {
const result = await this.restApiCoreServiceV2.update(request);

Expand Down
Loading
Loading