diff --git a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-many.handler.ts b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-many.handler.ts index 1527412f8e6..5c23275fd3d 100644 --- a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-many.handler.ts +++ b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-many.handler.ts @@ -56,10 +56,13 @@ export class RestApiCreateManyHandler extends RestApiBaseHandler { this.getAuthContextFromRequest(request), ); - const createdRecords = await repository.save(recordsToCreate); + const createdRecords = await repository.insert(recordsToCreate); + const createdRecordsIds = createdRecords.identifiers.map( + (record) => record.id, + ); const records = await this.getRecord({ - recordIds: createdRecords.map((record) => record.id), + recordIds: createdRecordsIds, repository, objectMetadata, depth: this.depthInputFactory.create(request), diff --git a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-one.handler.ts b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-one.handler.ts index 07ae1f6260d..0263a97c913 100644 --- a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-one.handler.ts +++ b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-create-one.handler.ts @@ -39,7 +39,8 @@ export class RestApiCreateOneHandler extends RestApiBaseHandler { this.getAuthContextFromRequest(request), ); - const createdRecord = await repository.save(recordToCreate); + const createdRecordResult = await repository.insert(recordToCreate); + const createdRecord = createdRecordResult.identifiers[0]; const records = await this.getRecord({ recordIds: [createdRecord.id], diff --git a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-update-one.handler.ts b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-update-one.handler.ts index 845e684f8b0..e930042e5ca 100644 --- a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-update-one.handler.ts +++ b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-update-one.handler.ts @@ -34,13 +34,12 @@ export class RestApiUpdateOneHandler extends RestApiBaseHandler { objectMetadataMapItem: objectMetadata.objectMetadataMapItem, }); - const updatedRecord = await repository.save({ - id: recordId, - ...overriddenBody, - }); + const updatedRecord = await repository.update(recordId, overriddenBody); + + const updatedRecordId = updatedRecord.generatedMaps[0].id; const records = await this.getRecord({ - recordIds: [updatedRecord.id], + recordIds: [updatedRecordId], repository, objectMetadata, depth: this.depthInputFactory.create(request), diff --git a/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts b/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts index 5028c298724..61ab8babfd1 100644 --- a/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts +++ b/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts @@ -1,17 +1,14 @@ import { Injectable, Logger } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; -import { Repository } from 'typeorm'; import { buildCreatedByFromApiKey } from 'src/engine/core-modules/actor/utils/build-created-by-from-api-key.util'; import { buildCreatedByFromFullNameMetadata } from 'src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util'; import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; +import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate'; import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export type CreateInput = Record; @@ -21,35 +18,18 @@ export class CreatedByFromAuthContextService { private readonly logger = new Logger(CreatedByFromAuthContextService.name); constructor( - @InjectRepository(FieldMetadataEntity) - private readonly fieldMetadataRepository: Repository, private readonly twentyORMGlobalManager: TwentyORMGlobalManager, ) {} async injectCreatedBy( records: CreateInput[], - objectMetadataNameSingular: string, + _objectMetadataNameSingular: string, authContext: AuthContext, ): Promise { const workspace = authContext.workspace; workspaceValidator.assertIsDefinedOrThrow(workspace); - // TODO: Once all objects have it, we can remove this check - const createdByFieldMetadata = await this.fieldMetadataRepository.findOne({ - where: { - object: { - nameSingular: objectMetadataNameSingular, - }, - name: 'createdBy', - workspaceId: workspace.id, - }, - }); - - if (!createdByFieldMetadata) { - return records; - } - const clonedRecords = structuredClone(records); const createdBy = await this.buildCreatedBy(authContext); diff --git a/packages/twenty-server/src/engine/twenty-orm/repository/workspace-select-query-builder.ts b/packages/twenty-server/src/engine/twenty-orm/repository/workspace-select-query-builder.ts index ac343a80586..24c314fc1ce 100644 --- a/packages/twenty-server/src/engine/twenty-orm/repository/workspace-select-query-builder.ts +++ b/packages/twenty-server/src/engine/twenty-orm/repository/workspace-select-query-builder.ts @@ -156,6 +156,8 @@ export class WorkspaceSelectQueryBuilder< this.internalContext, ); + this.take(1); + const result = await super.getOne(); const formattedResult = formatResult( diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message-list-fetch.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message-list-fetch.service.ts index 0c99028cfef..e3ea6906449 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message-list-fetch.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message-list-fetch.service.ts @@ -222,9 +222,10 @@ export class MessagingMessageListFetchService { `messageChannelId: ${messageChannel.id} launching workspace thread cleanup`, ); - await this.messagingMessageCleanerService.cleanWorkspaceThreads( - workspaceId, - ); + // TODO: Re-enable this after we have a way to clean up threads without impacting the message import + // await this.messagingMessageCleanerService.cleanWorkspaceThreads( + // workspaceId, + // ); this.logger.log( `messageChannelId: ${messageChannel.id} Total messages to import count: ${totalMessagesToImportCount}`, diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts index c3d18240e11..0c64a01e4a6 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts @@ -424,6 +424,11 @@ export class WorkflowRunWorkspaceService { ); } - await workflowRunRepository.update(workflowRunToUpdate.id, partialUpdate); + await workflowRunRepository.update( + workflowRunToUpdate.id, + partialUpdate, + undefined, + ['id'], + ); } }