Remove Favorite and FavoriteFolder from workspace schema (#19536)

## Summary

- Removes all workspace schema definitions for `Favorite` and
`FavoriteFolder` entities, which have been fully migrated to
`NavigationMenuItems`
- Deletes 26 standalone files including workspace entities, NestJS
modules, services, listeners, jobs, standard application builders (field
metadata, views, view fields, view field groups, indexes, page layouts),
mocks, and integration tests
- Cleans up ~40 modified files: removes `favorites` relation from 10
workspace entities and their field metadata utils, removes entries from
all builder maps, shared constants (`STANDARD_OBJECTS`,
`CoreObjectNameSingular`, `DEFAULT_RELATIONS_OBJECTS_STANDARD_IDS`), SDK
default relations, AI tool filtering, and standard object icons
This commit is contained in:
Charles Bochet
2026-04-10 12:47:06 +02:00
committed by GitHub
parent 34a903b4fa
commit b284c8323c
117 changed files with 24640 additions and 32339 deletions
@@ -9,7 +9,6 @@ import {
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity';
import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity';
import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
@@ -55,7 +54,6 @@ export class CompanyWorkspaceEntity {
taskTargets: EntityRelation<TaskTargetWorkspaceEntity[]>;
noteTargets: EntityRelation<NoteTargetWorkspaceEntity[]>;
opportunities: EntityRelation<OpportunityWorkspaceEntity[]>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
attachments: EntityRelation<AttachmentWorkspaceEntity[]>;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
}
@@ -4,7 +4,6 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
const TITLE_FIELD_NAME = 'title';
@@ -20,7 +19,6 @@ export class DashboardWorkspaceEntity extends BaseWorkspaceEntity {
createdBy: ActorMetadata;
updatedBy: ActorMetadata;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
attachments: EntityRelation<AttachmentWorkspaceEntity[]>;
searchVector: string;
}
@@ -1,10 +0,0 @@
import { Module } from '@nestjs/common';
import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module';
import { FavoriteFolderDeletionListener } from 'src/modules/favorite-folder/listeners/favorite-folder.listener';
@Module({
imports: [TwentyORMModule],
providers: [FavoriteFolderDeletionListener],
})
export class FavoriteFolderModule {}
@@ -1,43 +0,0 @@
import { Injectable } from '@nestjs/common';
import { type ObjectRecordDeleteEvent } from 'twenty-shared/database-events';
import { OnDatabaseBatchEvent } from 'src/engine/api/graphql/graphql-query-runner/decorators/on-database-batch-event.decorator';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager';
import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event-batch.type';
import { type FavoriteFolderWorkspaceEntity } from 'src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
@Injectable()
export class FavoriteFolderDeletionListener {
constructor(
private readonly globalWorkspaceOrmManager: GlobalWorkspaceOrmManager,
) {}
@OnDatabaseBatchEvent('favoriteFolder', DatabaseEventAction.DELETED)
async handleDelete(
payload: WorkspaceEventBatch<
ObjectRecordDeleteEvent<FavoriteFolderWorkspaceEntity>
>,
) {
const workspaceId = payload.workspaceId;
const authContext = buildSystemAuthContext(workspaceId);
await this.globalWorkspaceOrmManager.executeInWorkspaceContext(async () => {
for (const eventPayload of payload.events) {
const favoriteRepository =
await this.globalWorkspaceOrmManager.getRepository<FavoriteWorkspaceEntity>(
workspaceId,
'favorite',
);
await favoriteRepository.update(
{ favoriteFolderId: eventPayload.recordId },
{ deletedAt: new Date().toISOString() },
);
}
}, authContext);
}
}
@@ -1,18 +0,0 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
const NAME_FIELD_NAME = 'name';
export const SEARCH_FIELDS_FOR_FAVORITE_FOLDER: FieldTypeAndNameMetadata[] = [
{ name: NAME_FIELD_NAME, type: FieldMetadataType.TEXT },
];
export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
position: number;
name: string | null;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
}
@@ -1 +0,0 @@
export const FAVORITE_DELETION_BATCH_SIZE = 100;
@@ -1,21 +0,0 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { FavoriteDeletionJob } from 'src/modules/favorite/jobs/favorite-deletion.job';
import { FavoriteDeletionListener } from 'src/modules/favorite/listeners/favorite-deletion.listener';
import { FavoriteDeletionService } from 'src/modules/favorite/services/favorite-deletion.service';
@Module({
imports: [
TypeOrmModule.forFeature([ObjectMetadataEntity, FieldMetadataEntity]),
],
providers: [
FavoriteDeletionService,
FavoriteDeletionListener,
FavoriteDeletionJob,
],
exports: [],
})
export class FavoriteModule {}
@@ -1,29 +0,0 @@
import { Scope } from '@nestjs/common';
import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { FavoriteDeletionService } from 'src/modules/favorite/services/favorite-deletion.service';
export type FavoriteDeletionJobData = {
workspaceId: string;
deletedRecordIds: string[];
};
@Processor({
queueName: MessageQueue.deleteCascadeQueue,
scope: Scope.REQUEST,
})
export class FavoriteDeletionJob {
constructor(
private readonly favoriteDeletionService: FavoriteDeletionService,
) {}
@Process(FavoriteDeletionJob.name)
async handle(data: FavoriteDeletionJobData): Promise<void> {
await this.favoriteDeletionService.deleteFavoritesForDeletedRecords(
data.deletedRecordIds,
data.workspaceId,
);
}
}
@@ -1,37 +0,0 @@
import { Injectable } from '@nestjs/common';
import { type ObjectRecordDeleteEvent } from 'twenty-shared/database-events';
import { OnDatabaseBatchEvent } from 'src/engine/api/graphql/graphql-query-runner/decorators/on-database-batch-event.decorator';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator';
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event-batch.type';
import {
FavoriteDeletionJob,
type FavoriteDeletionJobData,
} from 'src/modules/favorite/jobs/favorite-deletion.job';
@Injectable()
export class FavoriteDeletionListener {
constructor(
@InjectMessageQueue(MessageQueue.deleteCascadeQueue)
private readonly messageQueueService: MessageQueueService,
) {}
@OnDatabaseBatchEvent('*', DatabaseEventAction.DELETED)
async handleDeletedEvent(
payload: WorkspaceEventBatch<ObjectRecordDeleteEvent>,
) {
const deletedRecordIds = payload.events.map(({ recordId }) => recordId);
await this.messageQueueService.add<FavoriteDeletionJobData>(
FavoriteDeletionJob.name,
{
workspaceId: payload.workspaceId,
deletedRecordIds,
},
);
}
}
@@ -1,92 +0,0 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { FieldMetadataType } from 'twenty-shared/types';
import { In, Repository } from 'typeorm';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager';
import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util';
import { FAVORITE_DELETION_BATCH_SIZE } from 'src/modules/favorite/constants/favorite-deletion-batch-size';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
@Injectable()
export class FavoriteDeletionService {
constructor(
@InjectRepository(ObjectMetadataEntity)
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
@InjectRepository(FieldMetadataEntity)
private readonly fieldMetadataRepository: Repository<FieldMetadataEntity>,
private readonly globalWorkspaceOrmManager: GlobalWorkspaceOrmManager,
) {}
async deleteFavoritesForDeletedRecords(
deletedRecordIds: string[],
workspaceId: string,
): Promise<void> {
const authContext = buildSystemAuthContext(workspaceId);
await this.globalWorkspaceOrmManager.executeInWorkspaceContext(async () => {
const favoriteRepository =
await this.globalWorkspaceOrmManager.getRepository<FavoriteWorkspaceEntity>(
workspaceId,
'favorite',
);
const favoriteObjectMetadata =
await this.objectMetadataRepository.findOne({
where: {
nameSingular: 'favorite',
workspaceId,
},
});
if (!favoriteObjectMetadata) {
throw new Error('Favorite object metadata not found');
}
const favoriteFields = await this.fieldMetadataRepository.find({
where: {
objectMetadataId: favoriteObjectMetadata.id,
type: FieldMetadataType.RELATION,
},
});
const favoritesToDelete = await favoriteRepository.find({
select: {
id: true,
},
where: favoriteFields.map((field) => ({
[`${field.name}Id`]: In(deletedRecordIds),
})),
withDeleted: true,
});
if (favoritesToDelete.length === 0) {
return;
}
const favoriteIdsToDelete = favoritesToDelete.map(
(favorite) => favorite.id,
);
const batches: string[][] = [];
for (
let i = 0;
i < favoriteIdsToDelete.length;
i += FAVORITE_DELETION_BATCH_SIZE
) {
batches.push(
favoriteIdsToDelete.slice(i, i + FAVORITE_DELETION_BATCH_SIZE),
);
}
for (const batch of batches) {
await favoriteRepository.delete(batch);
}
}, authContext);
}
}
@@ -1,42 +0,0 @@
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { type CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
import { type DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity';
import { type FavoriteFolderWorkspaceEntity } from 'src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity';
import { type NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity';
import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity';
import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
import { type WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
position: number;
forWorkspaceMember: EntityRelation<WorkspaceMemberWorkspaceEntity>;
forWorkspaceMemberId: string;
person: EntityRelation<PersonWorkspaceEntity> | null;
personId: string;
company: EntityRelation<CompanyWorkspaceEntity> | null;
companyId: string;
favoriteFolder: EntityRelation<FavoriteFolderWorkspaceEntity> | null;
favoriteFolderId: string;
opportunity: EntityRelation<OpportunityWorkspaceEntity> | null;
opportunityId: string;
workflow: EntityRelation<WorkflowWorkspaceEntity> | null;
workflowId: string;
workflowVersion: EntityRelation<WorkflowVersionWorkspaceEntity> | null;
workflowVersionId: string;
workflowRun: EntityRelation<WorkflowRunWorkspaceEntity> | null;
workflowRunId: string;
task: EntityRelation<TaskWorkspaceEntity> | null;
taskId: string;
note: EntityRelation<NoteWorkspaceEntity> | null;
noteId: string;
dashboard: EntityRelation<DashboardWorkspaceEntity> | null;
dashboardId: string;
viewId: string;
custom: EntityRelation<CustomWorkspaceEntity>;
}
@@ -2,8 +2,6 @@ import { Module } from '@nestjs/common';
import { CalendarModule } from 'src/modules/calendar/calendar.module';
import { ConnectedAccountModule } from 'src/modules/connected-account/connected-account.module';
import { FavoriteFolderModule } from 'src/modules/favorite-folder/favorite-folder.module';
import { FavoriteModule } from 'src/modules/favorite/favorite.module';
import { MessagingModule } from 'src/modules/messaging/messaging.module';
import { WorkflowModule } from 'src/modules/workflow/workflow.module';
import { WorkspaceMemberModule } from 'src/modules/workspace-member/workspace-member.module';
@@ -14,8 +12,6 @@ import { WorkspaceMemberModule } from 'src/modules/workspace-member/workspace-me
CalendarModule,
ConnectedAccountModule,
WorkflowModule,
FavoriteFolderModule,
FavoriteModule,
WorkspaceMemberModule,
],
providers: [],
@@ -8,7 +8,6 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity';
import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
@@ -29,6 +28,5 @@ export class NoteWorkspaceEntity extends BaseWorkspaceEntity {
noteTargets: EntityRelation<NoteTargetWorkspaceEntity[]>;
attachments: EntityRelation<AttachmentWorkspaceEntity[]>;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
searchVector: string;
}
@@ -9,7 +9,6 @@ import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/util
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity';
import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity';
@@ -34,7 +33,6 @@ export class OpportunityWorkspaceEntity extends BaseWorkspaceEntity {
pointOfContactId: string | null;
company: EntityRelation<CompanyWorkspaceEntity> | null;
companyId: string | null;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
taskTargets: EntityRelation<TaskTargetWorkspaceEntity[]>;
noteTargets: EntityRelation<NoteTargetWorkspaceEntity[]>;
attachments: EntityRelation<AttachmentWorkspaceEntity[]>;
@@ -14,7 +14,6 @@ import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migr
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity';
import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity';
import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity';
@@ -54,7 +53,6 @@ export class PersonWorkspaceEntity extends BaseWorkspaceEntity {
pointOfContactForOpportunities: EntityRelation<OpportunityWorkspaceEntity[]>;
taskTargets: EntityRelation<TaskTargetWorkspaceEntity[]>;
noteTargets: EntityRelation<NoteTargetWorkspaceEntity[]>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
attachments: EntityRelation<AttachmentWorkspaceEntity[]>;
messageParticipants: EntityRelation<MessageParticipantWorkspaceEntity[]>;
calendarEventParticipants: EntityRelation<
@@ -8,7 +8,6 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity';
import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
@@ -34,6 +33,5 @@ export class TaskWorkspaceEntity extends BaseWorkspaceEntity {
assignee: EntityRelation<WorkspaceMemberWorkspaceEntity> | null;
assigneeId: string | null;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
searchVector: string;
}
@@ -6,7 +6,6 @@ import { type WorkflowRunStepInfos } from 'twenty-shared/workflow';
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
import { type WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
@@ -73,6 +72,5 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
workflowVersionId: string;
workflow: EntityRelation<WorkflowWorkspaceEntity>;
workflowId: string;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
}
@@ -3,7 +3,6 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
@@ -33,6 +32,5 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
workflow: EntityRelation<WorkflowWorkspaceEntity>;
workflowId: string;
runs: EntityRelation<WorkflowRunWorkspaceEntity>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
}
@@ -4,7 +4,6 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util';
import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface';
import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
import { type WorkflowAutomatedTriggerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity';
import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
@@ -31,7 +30,6 @@ export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity {
versions: EntityRelation<WorkflowVersionWorkspaceEntity[]>;
runs: EntityRelation<WorkflowRunWorkspaceEntity[]>;
automatedTriggers: EntityRelation<WorkflowAutomatedTriggerWorkspaceEntity[]>;
favorites: EntityRelation<FavoriteWorkspaceEntity[]>;
timelineActivities: EntityRelation<TimelineActivityWorkspaceEntity[]>;
attachments: EntityRelation<AttachmentWorkspaceEntity[]>;
createdBy: ActorMetadata;
@@ -11,7 +11,6 @@ import { type BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-ob
import { type CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
import { type MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity';
import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity';
import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity';
@@ -75,7 +74,6 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
dateFormat: string;
timeFormat: string;
assignedTasks: Relation<TaskWorkspaceEntity[]>;
favorites: Relation<FavoriteWorkspaceEntity[]>;
accountOwnerForCompanies: Relation<CompanyWorkspaceEntity[]>;
authoredAttachments: Relation<AttachmentWorkspaceEntity[]>;
connectedAccounts: Relation<ConnectedAccountWorkspaceEntity[]>;