diff --git a/packages/twenty-server/src/engine/api/rest/core/rest-api-core.module.ts b/packages/twenty-server/src/engine/api/rest/core/rest-api-core.module.ts index 4e06dd73d4..7cb4199d40 100644 --- a/packages/twenty-server/src/engine/api/rest/core/rest-api-core.module.ts +++ b/packages/twenty-server/src/engine/api/rest/core/rest-api-core.module.ts @@ -19,14 +19,12 @@ import { RestApiUpdateManyHandler } from 'src/engine/api/rest/core/handlers/rest import { RestApiUpdateOneHandler } from 'src/engine/api/rest/core/handlers/rest-api-update-one.handler'; import { restToCommonArgsHandlers } from 'src/engine/api/rest/core/rest-to-common-args-handlers/rest-to-common-args-handlers'; import { RestApiCoreService } from 'src/engine/api/rest/core/services/rest-api-core.service'; -import { RestApiService } from 'src/engine/api/rest/rest-api.service'; import { ActorModule } from 'src/engine/core-modules/actor/actor.module'; import { ApiKeyModule } from 'src/engine/core-modules/api-key/api-key.module'; import { AuthModule } from 'src/engine/core-modules/auth/auth.module'; import { WorkspaceDomainsModule } from 'src/engine/core-modules/domain/workspace-domains/workspace-domains.module'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { RecordTransformerModule } from 'src/engine/core-modules/record-transformer/record-transformer.module'; -import { SecureHttpClientModule } from 'src/engine/core-modules/secure-http-client/secure-http-client.module'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; @@ -66,11 +64,9 @@ const restApiCoreResolvers = [ CoreCommonApiModule, WorkspaceDomainsModule, WorkspaceCacheModule, - SecureHttpClientModule, ], controllers: [RestApiCoreController], providers: [ - RestApiService, RestApiCoreService, ...restApiCoreResolvers, ...restToCommonArgsHandlers, diff --git a/packages/twenty-server/src/engine/api/rest/core/types/query-variables.type.ts b/packages/twenty-server/src/engine/api/rest/core/types/query-variables.type.ts deleted file mode 100644 index 66ec58dd8d..0000000000 --- a/packages/twenty-server/src/engine/api/rest/core/types/query-variables.type.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { type ObjectRecordOrderBy } from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface'; - -export type QueryVariables = { - id?: string; - ids?: string[]; - data?: object | null; - filter?: object; - orderBy?: ObjectRecordOrderBy; - last?: number; - first?: number; - startingAfter?: string; - endingBefore?: string; - input?: object; -}; diff --git a/packages/twenty-server/src/engine/api/rest/core/types/query.type.ts b/packages/twenty-server/src/engine/api/rest/core/types/query.type.ts deleted file mode 100644 index cccc9b00ef..0000000000 --- a/packages/twenty-server/src/engine/api/rest/core/types/query.type.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type QueryVariables } from 'src/engine/api/rest/core/types/query-variables.type'; - -export type Query = { - query: string; - variables: QueryVariables; -}; diff --git a/packages/twenty-server/src/engine/api/rest/errors/RestApiException.ts b/packages/twenty-server/src/engine/api/rest/errors/RestApiException.ts deleted file mode 100644 index e1598074bf..0000000000 --- a/packages/twenty-server/src/engine/api/rest/errors/RestApiException.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { BadRequestException } from '@nestjs/common'; - -import { type BaseGraphQLError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; - -const formatMessage = (error: BaseGraphQLError) => { - let formattedMessage = error.extensions - ? error.extensions.response?.error || - error.extensions.response || - error.message - : error.error || error.message; - - formattedMessage = formattedMessage - .replace(/"/g, "'") - .replace("Variable '$data' got i", 'I') - .replace("Variable '$input' got i", 'I'); - - const regex = /Field '[^']+' is not defined by type .*/; - - const match = formattedMessage.match(regex); - - if (match) { - formattedMessage = match[0]; - } - - return formattedMessage; -}; - -export class RestApiException extends BadRequestException { - constructor(errors: BaseGraphQLError[]) { - super({ - statusCode: 400, - messages: errors.map((error) => formatMessage(error)), - error: 'Bad Request', - }); - } -} diff --git a/packages/twenty-server/src/engine/api/rest/rest-api.service.ts b/packages/twenty-server/src/engine/api/rest/rest-api.service.ts deleted file mode 100644 index b26c95ec49..0000000000 --- a/packages/twenty-server/src/engine/api/rest/rest-api.service.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type AxiosResponse } from 'axios'; - -import { type Query } from 'src/engine/api/rest/core/types/query.type'; -import { RestApiException } from 'src/engine/api/rest/errors/RestApiException'; -import { type RequestContext } from 'src/engine/api/rest/types/RequestContext'; -import { SecureHttpClientService } from 'src/engine/core-modules/secure-http-client/secure-http-client.service'; -import { isDefined } from 'twenty-shared/utils'; - -export enum GraphqlApiType { - CORE = 'core', - METADATA = 'metadata', -} - -@Injectable() -export class RestApiService { - constructor( - private readonly secureHttpClientService: SecureHttpClientService, - ) {} - - async call( - graphqlApiType: GraphqlApiType, - requestContext: RequestContext, - data: Query, - ) { - let response: AxiosResponse; - const url = `${requestContext.baseUrl}/${ - graphqlApiType === GraphqlApiType.CORE - ? 'graphql' - : GraphqlApiType.METADATA - }`; - - // Internal request to the server's own GraphQL endpoint - const httpClient = this.secureHttpClientService.getInternalHttpClient(); - - try { - response = await httpClient.post(url, data, { - headers: { - 'Content-Type': 'application/json', - Authorization: requestContext.headers.authorization, - }, - }); - } catch (err) { - if (isDefined(err.response?.data?.errors)) { - throw new RestApiException(err.response.data.errors); - } - - throw err; - } - - if (isDefined(response.data.errors) && response.data.errors.length > 0) { - throw new RestApiException(response.data.errors); - } - - return response; - } -}