-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
[1/n]: Migrate deleteOne
Rest API to use TwentyORM directly
#9784
[1/n]: Migrate deleteOne
Rest API to use TwentyORM directly
#9784
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
This PR introduces direct TwentyORM integration for the DELETE REST API endpoint, replacing the previous GraphQL-based implementation with a more efficient direct database access approach.
- Added new
RestApiCoreServiceV2
in/packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
for direct TwentyORM operations - Implemented
RestCoreMiddleware
in/packages/twenty-server/src/engine/middlewares/rest-core-middleware.ts
for authentication and metadata validation - Created
CommonMiddlewareOperationsService
in/packages/twenty-server/src/engine/middlewares/common/common.service.ts
to share middleware logic between REST and GraphQL - Modified
RestApiCoreController
to useRestApiCoreServiceV2
for DELETE operations while maintaining backward compatibility for other endpoints - Added utility function
extractObjectIdFromPath
in/packages/twenty-server/src/engine/api/rest/core/utils/extract-id-from-path.utils.ts
for UUID validation
12 file(s) reviewed, 14 comment(s)
Edit PR Review Bot Settings | Greptile
packages/twenty-server/src/engine/api/rest/core/controllers/rest-api-core.controller.ts
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/utils/extract-id-from-path.utils.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/common/common.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core-middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core-middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core-middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core-middleware.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey, very nice code and strategy. Like the way you factorized middlewares and the new rest-api-core-v2 service is a great seed for the migration
I put some comments about code standard we have at twenty and some simplification suggestions. Feel free to comment. Thank you
packages/twenty-server/src/engine/middlewares/common/common-middleware-operations.module.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/common/common.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core-middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/common/common.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/common/common-middleware-operations.module.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/utils/extract-id-from-path.utils.ts
Outdated
Show resolved
Hide resolved
32469c4
to
7a2a2a6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello there ! Hope you're doing great
GG for this great PR
I've just reviewed the integrations tests left few comments, no big deal !
About to review main logic afterwards !
If I can provide any further information of course let me know !
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/utils/make-rest-api-request.util.ts
Show resolved
Hide resolved
Thank you for the review @prastoin, great suggestions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Second review on the logic this time !
Indeed there're some very neat refactor out there, good scoping !
Sorry for the long review, I'm available whenever you are tomorrow for peer review session if you wish to !
Please let me know, have a great evening
...es/twenty-server/src/engine/middlewares/constants/excluded-middleware-operations.constant.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core.middleware.ts
Outdated
Show resolved
Hide resolved
Nice! |
904f938
to
40a828e
Compare
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
40a828e
to
aa4be76
Compare
681f336
to
7518708
Compare
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/core-modules/auth/token/services/access-token.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/rest-core.middleware.ts
Outdated
Show resolved
Hide resolved
90b8558
to
13e9bc9
Compare
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
...es/twenty-server/src/engine/middlewares/constants/excluded-middleware-operations.constant.ts
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work ! nearly there left few nitpicks nitpicks and so on
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
...es/twenty-server/src/engine/middlewares/constants/excluded-middleware-operations.constant.ts
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
Show resolved
Hide resolved
13e9bc9
to
779034f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are very close 😍
packages/twenty-server/src/engine/middlewares/graphql-hydrate-request-from-token.middleware.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/middlewares/middleware.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core-delete.integration-spec.ts
Outdated
Show resolved
Hide resolved
@greptileai trigger |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR Summary
This PR continues the migration of REST API endpoints to use TwentyORM directly, focusing on middleware and error handling improvements.
- Added comprehensive middleware architecture in
/packages/twenty-server/src/engine/middlewares/middleware.service.ts
with centralized authentication and error handling - Introduced
RestApiExceptionFilter
in/packages/twenty-server/src/engine/api/rest/rest-api-exception.filter.ts
for consistent error handling across REST endpoints - Added integration tests in
/packages/twenty-server/test/integration/rest/suites/rest-api-core-delete.integration-spec.ts
covering authentication and error cases - Configured selective middleware application in
app.module.ts
usingMIGRATED_REST_METHODS
constant for gradual migration - Improved request data binding with new utility in
/packages/twenty-server/src/engine/middlewares/utils/bind-data-to-request-object.utils.ts
18 file(s) reviewed, 18 comment(s)
Edit PR Review Bot Settings | Greptile
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/core/rest-api-core-v2.service.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/rest-api-exception.filter.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/src/engine/api/rest/rest-api-exception.filter.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/constants/person-gql-fields.constants.ts
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core-delete.integration-spec.ts
Outdated
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/utils/make-rest-api-request.util.ts
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/utils/make-rest-api-request.util.ts
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/utils/make-rest-api-request.util.ts
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core-delete.integration-spec.ts
Show resolved
Hide resolved
packages/twenty-server/test/integration/rest/suites/rest-api-core-delete.integration-spec.ts
Show resolved
Hide resolved
@pacyL2K19
{
"statusCode": 400,
"messages": [<messages>],
"error": "Bad Request"
} We probably need to pass the change in Also, I think all those cases should be tested if possible |
779034f
to
5c596d7
Compare
I'm on this |
5c596d7
to
f2252b6
Compare
This is ready for another review @martmull |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice, thank you for your outstanding work! I believe we have an excellent first PR to kickstart the migration
Log
|
Congrats @pacyL2K19 ! :) Thanks for the great code and work ! |
This PR
DELETE /rest/*
endpoint to use TwentyORM