diff --git a/packages/twenty-server/src/database/typeorm-seeds/workspace/calendar-event-participants.ts b/packages/twenty-server/src/database/typeorm-seeds/workspace/calendar-event-participants.ts index bcdaa33a1d4..784ad55af83 100644 --- a/packages/twenty-server/src/database/typeorm-seeds/workspace/calendar-event-participants.ts +++ b/packages/twenty-server/src/database/typeorm-seeds/workspace/calendar-event-participants.ts @@ -2,7 +2,7 @@ import { EntityManager } from 'typeorm'; import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/people'; import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members'; -import { CalendarEventParticipantResponseStatus } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarEventParticipantResponseStatus } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; const tableName = 'calendarEventParticipant'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.module.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.module.ts index aca20911884..e10d5db06ad 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.module.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-runner.module.ts @@ -9,7 +9,7 @@ import { RecordPositionListener } from 'src/engine/api/graphql/workspace-query-r import { AuthModule } from 'src/engine/core-modules/auth/auth.module'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { TelemetryListener } from 'src/engine/api/graphql/workspace-query-runner/listeners/telemetry.listener'; import { AnalyticsModule } from 'src/engine/core-modules/analytics/analytics.module'; @@ -25,7 +25,7 @@ import { EntityEventsToDbListener } from './listeners/entity-events-to-db.listen WorkspaceDataSourceModule, WorkspacePreQueryHookModule, TypeOrmModule.forFeature([Workspace, FeatureFlagEntity], 'core'), - ObjectMetadataRepositoryModule.forFeature([WorkspaceMemberObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([WorkspaceMemberWorkspaceEntity]), AnalyticsModule, ], providers: [ diff --git a/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts b/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts index c3853b5638e..9391fbacf93 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/auth.module.ts @@ -24,9 +24,9 @@ import { FileUploadModule } from 'src/engine/core-modules/file/file-upload/file- import { MicrosoftAuthController } from 'src/engine/core-modules/auth/controllers/microsoft-auth.controller'; import { AppTokenService } from 'src/engine/core-modules/app-token/services/app-token.service'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; import { AuthResolver } from './auth.resolver'; @@ -57,9 +57,9 @@ const jwtModule = JwtModule.registerAsync({ 'core', ), ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - MessageChannelObjectMetadata, - CalendarChannelObjectMetadata, + ConnectedAccountWorkspaceEntity, + MessageChannelWorkspaceEntity, + CalendarChannelWorkspaceEntity, ]), HttpModule, UserWorkspaceModule, diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts index c1f37c75fa7..3fee5954444 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.ts @@ -17,20 +17,20 @@ import { } from 'src/modules/calendar/jobs/google-calendar-sync.job'; import { CalendarChannelRepository } from 'src/modules/calendar/repositories/calendar-channel.repository'; import { - CalendarChannelObjectMetadata, + CalendarChannelWorkspaceEntity, CalendarChannelVisibility, -} from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +} from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; import { - ConnectedAccountObjectMetadata, + ConnectedAccountWorkspaceEntity, ConnectedAccountProvider, -} from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +} from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { - MessageChannelObjectMetadata, + MessageChannelWorkspaceEntity, MessageChannelType, MessageChannelVisibility, -} from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +} from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { GmailFullSyncJobData, GmailFullSyncJob, @@ -48,11 +48,11 @@ export class GoogleAPIsService { private readonly environmentService: EnvironmentService, @InjectRepository(FeatureFlagEntity, 'core') private readonly featureFlagRepository: Repository, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, - @InjectObjectMetadataRepository(CalendarChannelObjectMetadata) + @InjectObjectMetadataRepository(CalendarChannelWorkspaceEntity) private readonly calendarChannelRepository: CalendarChannelRepository, ) {} diff --git a/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts b/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts index caad58c7ef6..77365b74aa8 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/listeners/billing-workspace-member.listener.ts @@ -4,7 +4,7 @@ import { OnEvent } from '@nestjs/event-emitter'; import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service'; import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { UpdateSubscriptionJob, UpdateSubscriptionJobData, @@ -22,7 +22,7 @@ export class BillingWorkspaceMemberListener { @OnEvent('workspaceMember.created') @OnEvent('workspaceMember.deleted') async handleCreateOrDeleteEvent( - payload: ObjectRecordCreateEvent, + payload: ObjectRecordCreateEvent, ) { if (!this.environmentService.get('IS_BILLING_ENABLED')) { return; diff --git a/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.module.ts b/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.module.ts index 917b4ee644c..c8a7d442a07 100644 --- a/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.module.ts +++ b/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.module.ts @@ -1,12 +1,20 @@ import { Module } from '@nestjs/common'; -import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { UserModule } from 'src/engine/core-modules/user/user.module'; import { TimelineCalendarEventResolver } from 'src/engine/core-modules/calendar/timeline-calendar-event.resolver'; import { TimelineCalendarEventService } from 'src/engine/core-modules/calendar/timeline-calendar-event.service'; +import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Module({ - imports: [WorkspaceDataSourceModule, UserModule], + imports: [ + TwentyORMModule.forFeature([ + CalendarEventWorkspaceEntity, + PersonWorkspaceEntity, + ]), + UserModule, + ], exports: [], providers: [TimelineCalendarEventResolver, TimelineCalendarEventService], }) diff --git a/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.resolver.ts b/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.resolver.ts index 3c1fa40fc38..b17f04fef1f 100644 --- a/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.resolver.ts +++ b/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.resolver.ts @@ -5,14 +5,11 @@ import { Max } from 'class-validator'; import { User } from 'src/engine/core-modules/user/user.entity'; import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { JwtAuthGuard } from 'src/engine/guards/jwt.auth.guard'; import { TIMELINE_CALENDAR_EVENTS_MAX_PAGE_SIZE } from 'src/engine/core-modules/calendar/constants/calendar.constants'; import { TimelineCalendarEventsWithTotal } from 'src/engine/core-modules/calendar/dtos/timeline-calendar-events-with-total.dto'; import { TimelineCalendarEventService } from 'src/engine/core-modules/calendar/timeline-calendar-event.service'; import { UserService } from 'src/engine/core-modules/user/services/user.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { NotFoundError } from 'src/engine/utils/graphql-errors.util'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; @ArgsType() @@ -51,21 +48,12 @@ export class TimelineCalendarEventResolver { @Query(() => TimelineCalendarEventsWithTotal) async getTimelineCalendarEventsFromPersonId( - @AuthWorkspace() { id: workspaceId }: Workspace, @AuthUser() user: User, @Args() { personId, page, pageSize }: GetTimelineCalendarEventsFromPersonIdArgs, ) { - const workspaceMember = await this.userService.loadWorkspaceMember(user); - - if (!workspaceMember) { - throw new NotFoundError('Workspace member not found'); - } - const timelineCalendarEvents = await this.timelineCalendarEventService.getCalendarEventsFromPersonIds( - workspaceMember.id, - workspaceId, [personId], page, pageSize, @@ -76,21 +64,12 @@ export class TimelineCalendarEventResolver { @Query(() => TimelineCalendarEventsWithTotal) async getTimelineCalendarEventsFromCompanyId( - @AuthWorkspace() { id: workspaceId }: Workspace, @AuthUser() user: User, @Args() { companyId, page, pageSize }: GetTimelineCalendarEventsFromCompanyIdArgs, ) { - const workspaceMember = await this.userService.loadWorkspaceMember(user); - - if (!workspaceMember) { - throw new NotFoundError('Workspace member not found'); - } - const timelineCalendarEvents = await this.timelineCalendarEventService.getCalendarEventsFromCompanyId( - workspaceMember.id, - workspaceId, companyId, page, pageSize, diff --git a/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.service.ts b/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.service.ts index 763952b8de0..1e85b04158e 100644 --- a/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.service.ts +++ b/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.service.ts @@ -1,272 +1,159 @@ import { Injectable } from '@nestjs/common'; -import groupBy from 'lodash.groupby'; +import { Any } from 'typeorm'; +import omit from 'lodash.omit'; import { TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE } from 'src/engine/core-modules/calendar/constants/calendar.constants'; -import { TimelineCalendarEventParticipant } from 'src/engine/core-modules/calendar/dtos/timeline-calendar-event-participant.dto'; -import { - TimelineCalendarEvent, - TimelineCalendarEventVisibility, -} from 'src/engine/core-modules/calendar/dtos/timeline-calendar-event.dto'; +import { TimelineCalendarEventVisibility } from 'src/engine/core-modules/calendar/dtos/timeline-calendar-event.dto'; import { TimelineCalendarEventsWithTotal } from 'src/engine/core-modules/calendar/dtos/timeline-calendar-events-with-total.dto'; -import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { InjectWorkspaceRepository } from 'src/engine/twenty-orm/decorators/inject-workspace-repository.decorator'; +import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -type TimelineCalendarEventParticipantWithPersonInformation = - ObjectRecord & { - personFirstName: string; - personLastName: string; - personAvatarUrl: string; - workspaceMemberFirstName: string; - workspaceMemberLastName: string; - workspaceMemberAvatarUrl: string; - }; @Injectable() export class TimelineCalendarEventService { constructor( - private readonly workspaceDataSourceService: WorkspaceDataSourceService, + @InjectWorkspaceRepository(CalendarEventWorkspaceEntity) + private readonly calendarEventRepository: WorkspaceRepository, + @InjectWorkspaceRepository(PersonWorkspaceEntity) + private readonly personRepository: WorkspaceRepository, ) {} + // TODO: Align return type with the entities to avoid mapping async getCalendarEventsFromPersonIds( - workspaceMemberId: string, - workspaceId: string, personIds: string[], page = 1, pageSize: number = TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE, ): Promise { const offset = (page - 1) * pageSize; - const dataSourceSchema = - this.workspaceDataSourceService.getSchemaName(workspaceId); + const calendarEventIds = await this.calendarEventRepository.find({ + where: { + calendarEventParticipants: { + person: { + id: Any(personIds), + }, + }, + }, + select: { + id: true, + startsAt: true, + }, + skip: offset, + take: pageSize, + order: { + startsAt: 'DESC', + }, + }); - const calendarEvents: Omit[] = - await this.workspaceDataSourceService.executeRawQuery( - `SELECT - "calendarEvent".* - FROM - ${dataSourceSchema}."calendarEvent" "calendarEvent" - LEFT JOIN - ${dataSourceSchema}."calendarEventParticipant" "calendarEventParticipant" ON "calendarEvent".id = "calendarEventParticipant"."calendarEventId" - LEFT JOIN - ${dataSourceSchema}."person" "person" ON "calendarEventParticipant"."personId" = "person".id - WHERE - "calendarEventParticipant"."personId" = ANY($1) - GROUP BY - "calendarEvent".id - ORDER BY - "calendarEvent"."startsAt" DESC - LIMIT $2 - OFFSET $3`, - [personIds, pageSize, offset], - workspaceId, - ); + const ids = calendarEventIds.map(({ id }) => id); - if (!calendarEvents) { + if (ids.length <= 0) { return { totalNumberOfCalendarEvents: 0, timelineCalendarEvents: [], }; } - const calendarEventParticipants: TimelineCalendarEventParticipantWithPersonInformation[] = - await this.workspaceDataSourceService.executeRawQuery( - `SELECT - "calendarEventParticipant".*, - "person"."nameFirstName" as "personFirstName", - "person"."nameLastName" as "personLastName", - "person"."avatarUrl" as "personAvatarUrl", - "workspaceMember"."nameFirstName" as "workspaceMemberFirstName", - "workspaceMember"."nameLastName" as "workspaceMemberLastName", - "workspaceMember"."avatarUrl" as "workspaceMemberAvatarUrl" - FROM - ${dataSourceSchema}."calendarEventParticipant" "calendarEventParticipant" - LEFT JOIN - ${dataSourceSchema}."person" "person" ON "calendarEventParticipant"."personId" = "person".id - LEFT JOIN - ${dataSourceSchema}."workspaceMember" "workspaceMember" ON "calendarEventParticipant"."workspaceMemberId" = "workspaceMember".id - WHERE - "calendarEventParticipant"."calendarEventId" = ANY($1)`, - [calendarEvents.map((event) => event.id)], - workspaceId, - ); - - const formattedCalendarEventParticipants: TimelineCalendarEventParticipant[] = - calendarEventParticipants.map((participant) => { - const firstName = - participant.personFirstName || - participant.workspaceMemberFirstName || - ''; - - const lastName = - participant.personLastName || - participant.workspaceMemberLastName || - ''; - - const displayName = - firstName || participant.displayName || participant.handle; + // We've split the query into two parts, because we want to fetch all the participants without any filtering + const [events, total] = await this.calendarEventRepository.findAndCount({ + where: { + id: Any(ids), + }, + relations: { + calendarEventParticipants: { + person: true, + workspaceMember: true, + }, + calendarChannelEventAssociations: { + calendarChannel: true, + }, + }, + }); - const avatarUrl = - participant.personAvatarUrl || - participant.workspaceMemberAvatarUrl || - ''; + // Keep events in the same order as they ids were returned + const orderedEvents = events.sort( + (a, b) => ids.indexOf(a.id) - ids.indexOf(b.id), + ); - return { - calendarEventId: participant.calendarEventId, - personId: participant.personId, - workspaceMemberId: participant.workspaceMemberId, - firstName, - lastName, - displayName, - avatarUrl, + const timelineCalendarEvents = orderedEvents.map((event) => { + const participants = event.calendarEventParticipants.map( + (participant) => ({ + calendarEventId: event.id, + personId: participant.person?.id, + workspaceMemberId: participant.workspaceMember?.id, + firstName: + participant.person?.name.firstName || + participant.workspaceMember?.name.firstName || + '', + lastName: + participant.person?.name.lastName || + participant.workspaceMember?.name.lastName || + '', + displayName: + participant.person?.name.firstName || + participant.person?.name.lastName || + participant.workspaceMember?.name.firstName || + participant.workspaceMember?.name.lastName || + '', + avatarUrl: + participant.person?.avatarUrl || + participant.workspaceMember?.avatarUrl || + '', handle: participant.handle, - }; - }); - - const calendarEventParticipantsByEventId: { - [calendarEventId: string]: TimelineCalendarEventParticipant[]; - } = groupBy(formattedCalendarEventParticipants, 'calendarEventId'); - - const totalNumberOfCalendarEvents: { count: number }[] = - await this.workspaceDataSourceService.executeRawQuery( - ` - SELECT - COUNT(DISTINCT "calendarEventId") - FROM - ${dataSourceSchema}."calendarEventParticipant" "calendarEventParticipant" - WHERE - "calendarEventParticipant"."personId" = ANY($1) - `, - [personIds], - workspaceId, + }), ); - - const timelineCalendarEvents = calendarEvents.map((event) => { - const participants = calendarEventParticipantsByEventId[event.id] || []; + const visibility = event.calendarChannelEventAssociations.some( + (association) => association.calendarChannel.visibility === 'METADATA', + ) + ? TimelineCalendarEventVisibility.METADATA + : TimelineCalendarEventVisibility.SHARE_EVERYTHING; return { - ...event, + ...omit(event, [ + 'calendarEventParticipants', + 'calendarChannelEventAssociations', + ]), + startsAt: event.startsAt as unknown as Date, + endsAt: event.endsAt as unknown as Date, participants, + visibility, }; }); - const calendarEventIdsWithWorkspaceMemberInParticipants = - await this.workspaceDataSourceService.executeRawQuery( - ` - SELECT - "calendarEventId" - FROM - ${dataSourceSchema}."calendarEventParticipant" "calendarEventParticipant" - WHERE - "calendarEventParticipant"."workspaceMemberId" = $1 - `, - [workspaceMemberId], - workspaceId, - ); - - const calendarEventIdsWithWorkspaceMemberInParticipantsFormatted = - calendarEventIdsWithWorkspaceMemberInParticipants.map( - (event: { calendarEventId: string }) => event.calendarEventId, - ); - - const calendarEventIdsToFetchVisibilityFor = timelineCalendarEvents - .filter( - (event) => - !calendarEventIdsWithWorkspaceMemberInParticipantsFormatted.includes( - event.id, - ), - ) - .map((event) => event.id); - - const calendarEventIdsForWhichVisibilityIsMetadata: - | { - id: string; - }[] - | undefined = await this.workspaceDataSourceService.executeRawQuery( - ` - SELECT - "calendarChannelEventAssociation"."calendarEventId" AS "id" - FROM - ${dataSourceSchema}."calendarChannel" "calendarChannel" - LEFT JOIN - ${dataSourceSchema}."calendarChannelEventAssociation" "calendarChannelEventAssociation" ON "calendarChannel".id = "calendarChannelEventAssociation"."calendarChannelId" - WHERE - "calendarChannelEventAssociation"."calendarEventId" = ANY($1) - AND - "calendarChannel"."visibility" = 'METADATA' - `, - [calendarEventIdsToFetchVisibilityFor], - workspaceId, - ); - - if (!calendarEventIdsForWhichVisibilityIsMetadata) { - throw new Error('Failed to fetch calendar event visibility'); - } - - const calendarEventIdsForWhichVisibilityIsMetadataMap = new Map( - calendarEventIdsForWhichVisibilityIsMetadata.map((event) => [ - event.id, - TimelineCalendarEventVisibility.METADATA, - ]), - ); - - timelineCalendarEvents.forEach((event) => { - event.visibility = - calendarEventIdsForWhichVisibilityIsMetadataMap.get(event.id) ?? - TimelineCalendarEventVisibility.SHARE_EVERYTHING; - - if (event.visibility === TimelineCalendarEventVisibility.METADATA) { - event.title = ''; - event.description = ''; - event.location = ''; - event.conferenceSolution = ''; - event.conferenceLink = { label: '', url: '' }; - } - }); - return { - totalNumberOfCalendarEvents: totalNumberOfCalendarEvents[0].count, + totalNumberOfCalendarEvents: total, timelineCalendarEvents, }; } async getCalendarEventsFromCompanyId( - workspaceMemberId: string, - workspaceId: string, companyId: string, page = 1, pageSize: number = TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE, ): Promise { - const dataSourceSchema = - this.workspaceDataSourceService.getSchemaName(workspaceId); - - const personIds = await this.workspaceDataSourceService.executeRawQuery( - ` - SELECT - p."id" - FROM - ${dataSourceSchema}."person" p - WHERE - p."companyId" = $1 - `, - [companyId], - workspaceId, - ); + const personIds = await this.personRepository.find({ + where: { + company: { + id: companyId, + }, + }, + select: { + id: true, + }, + }); - if (!personIds) { + if (personIds.length <= 0) { return { totalNumberOfCalendarEvents: 0, timelineCalendarEvents: [], }; } - const formattedPersonIds = personIds.map( - (personId: { id: string }) => personId.id, - ); + const formattedPersonIds = personIds.map(({ id }) => id); const messageThreads = await this.getCalendarEventsFromPersonIds( - workspaceMemberId, - workspaceId, formattedPersonIds, page, pageSize, diff --git a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts index 4fa8467538b..a7acdc0f3f2 100644 --- a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts +++ b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts @@ -10,6 +10,7 @@ import { TimelineMessagingModule } from 'src/engine/core-modules/messaging/timel import { TimelineCalendarEventModule } from 'src/engine/core-modules/calendar/timeline-calendar-event.module'; import { BillingModule } from 'src/engine/core-modules/billing/billing.module'; import { HealthModule } from 'src/engine/core-modules/health/health.module'; +import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; import { AnalyticsModule } from './analytics/analytics.module'; import { FileModule } from './file/file.module'; @@ -17,6 +18,9 @@ import { ClientConfigModule } from './client-config/client-config.module'; @Module({ imports: [ + TwentyORMModule.register({ + workspaceEntities: ['dist/src/**/*.workspace-entity{.ts,.js}'], + }), HealthModule, AnalyticsModule, AuthModule, diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts index 0e8fc4c6f73..46653ee0739 100644 --- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts +++ b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts @@ -10,7 +10,7 @@ import { DataSourceService } from 'src/engine/metadata-modules/data-source/data- import { User } from 'src/engine/core-modules/user/user.entity'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/types/object-record-create.event'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { assert } from 'src/utils/assert'; export class UserWorkspaceService extends TypeOrmQueryService { @@ -59,7 +59,7 @@ export class UserWorkspaceService extends TypeOrmQueryService { `Error while creating workspace member ${user.email} on workspace ${workspaceId}`, ); const payload = - new ObjectRecordCreateEvent(); + new ObjectRecordCreateEvent(); payload.workspaceId = workspaceId; payload.properties = { diff --git a/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts b/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts index f3128670bbe..47b90a4197a 100644 --- a/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts +++ b/packages/twenty-server/src/engine/core-modules/user/services/user.service.ts @@ -10,7 +10,7 @@ import { WorkspaceMember } from 'src/engine/core-modules/user/dtos/workspace-mem import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { TypeORMService } from 'src/database/typeorm/typeorm.service'; import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service'; @@ -113,7 +113,7 @@ export class UserService extends TypeOrmQueryService { `SELECT * FROM ${dataSourceMetadata.schema}."workspaceMember"`, ); const workspaceMember = workspaceMembers.filter( - (member: ObjectRecord) => + (member: ObjectRecord) => member.userId === userId, )?.[0]; @@ -129,7 +129,7 @@ export class UserService extends TypeOrmQueryService { `DELETE FROM ${dataSourceMetadata.schema}."workspaceMember" WHERE "userId" = '${userId}'`, ); const payload = - new ObjectRecordDeleteEvent(); + new ObjectRecordDeleteEvent(); payload.workspaceId = workspaceId; payload.properties = { diff --git a/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts b/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts index 3c93e693869..dbb717fcfd1 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/workspace-workspace-member.listener.ts @@ -3,7 +3,7 @@ import { OnEvent } from '@nestjs/event-emitter'; import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event'; import { HandleWorkspaceMemberDeletedJob, @@ -19,7 +19,7 @@ export class WorkspaceWorkspaceMemberListener { @OnEvent('workspaceMember.deleted') async handleDeleteEvent( - payload: ObjectRecordDeleteEvent, + payload: ObjectRecordDeleteEvent, ) { const userId = payload.properties.before.userId; diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts index f3999fd7f9f..80207a27fbb 100644 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts @@ -26,7 +26,7 @@ export const fieldMetadataTypeToColumnType = ( case FieldMetadataType.DATE_TIME: return 'timestamptz'; case FieldMetadataType.DATE: - return 'date'; + return 'datetime'; case FieldMetadataType.RATING: case FieldMetadataType.SELECT: case FieldMetadataType.MULTI_SELECT: diff --git a/packages/twenty-server/src/engine/object-metadata-repository/metadata-to-repository.mapping.ts b/packages/twenty-server/src/engine/object-metadata-repository/metadata-to-repository.mapping.ts index 9974aceade3..d51248fa140 100644 --- a/packages/twenty-server/src/engine/object-metadata-repository/metadata-to-repository.mapping.ts +++ b/packages/twenty-server/src/engine/object-metadata-repository/metadata-to-repository.mapping.ts @@ -18,24 +18,24 @@ import { AttachmentRepository } from 'src/modules/attachment/repositories/attach import { CommentRepository } from 'src/modules/activity/repositories/comment.repository'; export const metadataToRepositoryMapping = { - AuditLogObjectMetadata: AuditLogRepository, - BlocklistObjectMetadata: BlocklistRepository, - CalendarChannelEventAssociationObjectMetadata: + AuditLogWorkspaceEntity: AuditLogRepository, + BlocklistWorkspaceEntity: BlocklistRepository, + CalendarChannelEventAssociationWorkspaceEntity: CalendarChannelEventAssociationRepository, - CalendarChannelObjectMetadata: CalendarChannelRepository, - CalendarEventParticipantObjectMetadata: CalendarEventParticipantRepository, - CalendarEventObjectMetadata: CalendarEventRepository, - CompanyObjectMetadata: CompanyRepository, - ConnectedAccountObjectMetadata: ConnectedAccountRepository, - MessageChannelMessageAssociationObjectMetadata: + CalendarChannelWorkspaceEntity: CalendarChannelRepository, + CalendarEventParticipantWorkspaceEntity: CalendarEventParticipantRepository, + CalendarEventWorkspaceEntity: CalendarEventRepository, + CompanyWorkspaceEntity: CompanyRepository, + ConnectedAccountWorkspaceEntity: ConnectedAccountRepository, + MessageChannelMessageAssociationWorkspaceEntity: MessageChannelMessageAssociationRepository, - MessageChannelObjectMetadata: MessageChannelRepository, - MessageObjectMetadata: MessageRepository, - MessageParticipantObjectMetadata: MessageParticipantRepository, - MessageThreadObjectMetadata: MessageThreadRepository, - PersonObjectMetadata: PersonRepository, - TimelineActivityObjectMetadata: TimelineActivityRepository, - WorkspaceMemberObjectMetadata: WorkspaceMemberRepository, - AttachmentObjectMetadata: AttachmentRepository, - CommentObjectMetadata: CommentRepository, + MessageChannelWorkspaceEntity: MessageChannelRepository, + MessageWorkspaceEntity: MessageRepository, + MessageParticipantWorkspaceEntity: MessageParticipantRepository, + MessageThreadWorkspaceEntity: MessageThreadRepository, + PersonWorkspaceEntity: PersonRepository, + TimelineActivityWorkspaceEntity: TimelineActivityRepository, + WorkspaceMemberWorkspaceEntity: WorkspaceMemberRepository, + AttachmentWorkspaceEntity: AttachmentRepository, + CommentWorkspaceEntity: CommentRepository, }; diff --git a/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts b/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts index 78774c4c372..ee7740f065e 100644 --- a/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts +++ b/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts @@ -3,11 +3,11 @@ import { RelationMetadataType, RelationOnDeleteAction, } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; -import { ActivityTargetObjectMetadata } from 'src/modules/activity/standard-objects/activity-target.object-metadata'; -import { FavoriteObjectMetadata } from 'src/modules/favorite/standard-objects/favorite.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; +import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity'; +import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; import { CUSTOM_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; @@ -45,11 +45,11 @@ export class CustomWorkspaceEntity extends BaseWorkspaceEntity { description: (objectMetadata) => `Activities tied to the ${objectMetadata.labelSingular}`, icon: 'IconCheckbox', - inverseSideTarget: () => ActivityTargetObjectMetadata, + inverseSideTarget: () => ActivityTargetWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - activityTargets: ActivityTargetObjectMetadata[]; + activityTargets: ActivityTargetWorkspaceEntity[]; @WorkspaceRelation({ standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.favorites, @@ -58,12 +58,12 @@ export class CustomWorkspaceEntity extends BaseWorkspaceEntity { description: (objectMetadata) => `Favorites tied to the ${objectMetadata.labelSingular}`, icon: 'IconHeart', - inverseSideTarget: () => FavoriteObjectMetadata, + inverseSideTarget: () => FavoriteWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - favorites: FavoriteObjectMetadata[]; + favorites: FavoriteWorkspaceEntity[]; @WorkspaceRelation({ standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.attachments, @@ -72,11 +72,11 @@ export class CustomWorkspaceEntity extends BaseWorkspaceEntity { description: (objectMetadata) => `Attachments tied to the ${objectMetadata.labelSingular}`, icon: 'IconFileImport', - inverseSideTarget: () => AttachmentObjectMetadata, + inverseSideTarget: () => AttachmentWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - attachments: AttachmentObjectMetadata[]; + attachments: AttachmentWorkspaceEntity[]; @WorkspaceRelation({ standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.timelineActivities, @@ -85,10 +85,10 @@ export class CustomWorkspaceEntity extends BaseWorkspaceEntity { description: (objectMetadata) => `Timeline Activities tied to the ${objectMetadata.labelSingular}`, icon: 'IconIconTimelineEvent', - inverseSideTarget: () => TimelineActivityObjectMetadata, + inverseSideTarget: () => TimelineActivityWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - timelineActivities: TimelineActivityObjectMetadata[]; + timelineActivities: TimelineActivityWorkspaceEntity[]; } diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-object.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-entity.decorator.ts similarity index 100% rename from packages/twenty-server/src/engine/twenty-orm/decorators/workspace-object.decorator.ts rename to packages/twenty-server/src/engine/twenty-orm/decorators/workspace-entity.decorator.ts diff --git a/packages/twenty-server/src/engine/twenty-orm/entity-manager/entity.manager.ts b/packages/twenty-server/src/engine/twenty-orm/entity-manager/entity.manager.ts index 989bd1550a6..7d526046cbe 100644 --- a/packages/twenty-server/src/engine/twenty-orm/entity-manager/entity.manager.ts +++ b/packages/twenty-server/src/engine/twenty-orm/entity-manager/entity.manager.ts @@ -9,7 +9,9 @@ export class WorkspaceEntityManager extends EntityManager { // find already created repository instance and return it if found const repoFromMap = this.repositories.get(target); - if (repoFromMap) return repoFromMap as WorkspaceRepository; + if (repoFromMap) { + return repoFromMap as WorkspaceRepository; + } const newRepository = new WorkspaceRepository( target, diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts index c5fd7b8ac65..68b537d8634 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts @@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common'; import { ColumnType, EntitySchemaColumnOptions } from 'typeorm'; import { WorkspaceFieldMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface'; +import { WorkspaceRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface'; import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; import { isEnumFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-enum-field-metadata-type.util'; @@ -20,6 +21,7 @@ type EntitySchemaColumnMap = { export class EntitySchemaColumnFactory { create( fieldMetadataArgsCollection: WorkspaceFieldMetadataArgs[], + relationMetadataArgsCollection: WorkspaceRelationMetadataArgs[], ): EntitySchemaColumnMap { let entitySchemaColumnMap: EntitySchemaColumnMap = {}; @@ -53,6 +55,16 @@ export class EntitySchemaColumnFactory { default: defaultValue, }; + for (const relationMetadataArgs of relationMetadataArgsCollection) { + if (relationMetadataArgs.joinColumn) { + entitySchemaColumnMap[relationMetadataArgs.joinColumn] = { + name: relationMetadataArgs.joinColumn, + type: 'uuid', + nullable: relationMetadataArgs.isNullable, + }; + } + } + if (isEnumFieldMetadataType(fieldMetadataArgs.type)) { const values = fieldMetadataArgs.options?.map((option) => option.value); diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-relation.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-relation.factory.ts index 83162441865..d194879214f 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-relation.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-relation.factory.ts @@ -15,11 +15,14 @@ type EntitySchemaRelationMap = { @Injectable() export class EntitySchemaRelationFactory { create( + // eslint-disable-next-line @typescript-eslint/ban-types + target: Function, relationMetadataArgsCollection: WorkspaceRelationMetadataArgs[], ): EntitySchemaRelationMap { const entitySchemaRelationMap: EntitySchemaRelationMap = {}; for (const relationMetadataArgs of relationMetadataArgsCollection) { + const objectName = convertClassNameToObjectMetadataName(target.name); const oppositeTarget = relationMetadataArgs.inverseSideTarget(); const oppositeObjectName = convertClassNameToObjectMetadataName( oppositeTarget.name, @@ -30,7 +33,7 @@ export class EntitySchemaRelationFactory { entitySchemaRelationMap[relationMetadataArgs.name] = { type: relationType, target: oppositeObjectName, - inverseSide: relationMetadataArgs.inverseSideFieldKey, + inverseSide: relationMetadataArgs.inverseSideFieldKey ?? objectName, joinColumn: relationMetadataArgs.joinColumn ? { name: relationMetadataArgs.joinColumn, diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts index 75bf72cbc30..326f5558a01 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts @@ -28,9 +28,11 @@ export class EntitySchemaFactory { const columns = this.entitySchemaColumnFactory.create( fieldMetadataArgsCollection, + relationMetadataArgsCollection, ); const relations = this.entitySchemaRelationFactory.create( + target, relationMetadataArgsCollection, ); diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/twenty-orm-options.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/twenty-orm-options.interface.ts index dc14ceb2ab5..b0b06f754d8 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/twenty-orm-options.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/twenty-orm-options.interface.ts @@ -3,7 +3,7 @@ import { FactoryProvider, ModuleMetadata, Type } from '@nestjs/common'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; export interface TwentyORMOptions { - workspaceEntities: Type[]; + workspaceEntities: (Type | string)[]; } export type TwentyORMModuleAsyncOptions = { diff --git a/packages/twenty-server/src/engine/twenty-orm/repository/workspace.repository.ts b/packages/twenty-server/src/engine/twenty-orm/repository/workspace.repository.ts index ef405aa5c81..f03123e0734 100644 --- a/packages/twenty-server/src/engine/twenty-orm/repository/workspace.repository.ts +++ b/packages/twenty-server/src/engine/twenty-orm/repository/workspace.repository.ts @@ -21,6 +21,7 @@ import { ObjectLiteralStorage } from 'src/engine/twenty-orm/storage/object-liter import { compositeTypeDefintions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; +import { isPlainObject } from 'src/utils/is-plain-object'; export class WorkspaceRepository< Entity extends ObjectLiteral, @@ -492,7 +493,7 @@ export class WorkspaceRepository< const fieldMetadataArgs = compositeFieldMetadataArgsMap.get(key); if (!fieldMetadataArgs) { - if (typeof value === 'object') { + if (isPlainObject(value)) { newData[key] = this.formatData(value); } else { newData[key] = value; @@ -524,25 +525,30 @@ export class WorkspaceRepository< return newData as T; } - private formatResult(data: T): T { + private formatResult( + data: T, + target = ObjectLiteralStorage.getObjectLiteral(this.target as any), + ): T { if (!data) { return data; } if (Array.isArray(data)) { - return data.map((item) => this.formatResult(item)) as T; + return data.map((item) => this.formatResult(item, target)) as T; } - const objectLiteral = ObjectLiteralStorage.getObjectLiteral( - this.target as any, - ); + if (!isPlainObject(data)) { + return data; + } - if (!objectLiteral) { + if (!target) { throw new Error('Object literal is missing'); } const fieldMetadataArgsCollection = - metadataArgsStorage.filterFields(objectLiteral); + metadataArgsStorage.filterFields(target); + const relationMetadataArgsCollection = + metadataArgsStorage.filterRelations(target); const compositeFieldMetadataArgsCollection = fieldMetadataArgsCollection.filter((fieldMetadataArg) => isCompositeFieldMetadataType(fieldMetadataArg.type), @@ -565,13 +571,20 @@ export class WorkspaceRepository< ]); }), ); + const relationMetadataArgsMap = new Map( + relationMetadataArgsCollection.map((relationMetadataArgs) => [ + relationMetadataArgs.name, + relationMetadataArgs, + ]), + ); const newData: object = {}; for (const [key, value] of Object.entries(data)) { const compositePropertyArgs = compositeFieldMetadataArgsMap.get(key); + const relationMetadataArgs = relationMetadataArgsMap.get(key); - if (!compositePropertyArgs) { - if (typeof value === 'object') { + if (!compositePropertyArgs && !relationMetadataArgs) { + if (isPlainObject(value)) { newData[key] = this.formatResult(value); } else { newData[key] = value; @@ -579,6 +592,18 @@ export class WorkspaceRepository< continue; } + if (relationMetadataArgs) { + newData[key] = this.formatResult( + value, + relationMetadataArgs.inverseSideTarget() as any, + ); + continue; + } + + if (!compositePropertyArgs) { + continue; + } + const { parentField, ...compositeProperty } = compositePropertyArgs; if (!newData[parentField]) { diff --git a/packages/twenty-server/src/engine/twenty-orm/twenty-orm-core.module.ts b/packages/twenty-server/src/engine/twenty-orm/twenty-orm-core.module.ts index a960c9a0fb4..befe7c28a71 100644 --- a/packages/twenty-server/src/engine/twenty-orm/twenty-orm-core.module.ts +++ b/packages/twenty-server/src/engine/twenty-orm/twenty-orm-core.module.ts @@ -5,12 +5,16 @@ import { Module, OnApplicationShutdown, Provider, + Type, } from '@nestjs/common'; import { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN, } from '@nestjs/common/cache/cache.module-definition'; +import { importClassesFromDirectories } from 'typeorm/util/DirectoryExportedClassesLoader'; +import { Logger as TypeORMLogger } from 'typeorm/logger/Logger'; + import { TwentyORMModuleAsyncOptions, TwentyORMOptions, @@ -23,6 +27,9 @@ import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-s import { EntitySchemaFactory } from 'src/engine/twenty-orm/factories/entity-schema.factory'; import { DataSourceStorage } from 'src/engine/twenty-orm/storage/data-source.storage'; import { ScopedWorkspaceDatasourceFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-datasource.factory'; +import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; +import { splitClassesAndStrings } from 'src/engine/twenty-orm/utils/split-classes-and-strings.util'; +import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; @Global() @Module({ @@ -34,10 +41,12 @@ export class TwentyORMCoreModule extends ConfigurableModuleClass implements OnApplicationShutdown { - private readonly logger = new Logger(TwentyORMCoreModule.name); + private static readonly logger = new Logger(TwentyORMCoreModule.name); static register(options: TwentyORMOptions): DynamicModule { const dynamicModule = super.register(options); + + console.log('register', options); const providers: Provider[] = [ { provide: TWENTY_ORM_WORKSPACE_DATASOURCE, @@ -45,7 +54,11 @@ export class TwentyORMCoreModule entitySchemaFactory: EntitySchemaFactory, scopedWorkspaceDatasourceFactory: ScopedWorkspaceDatasourceFactory, ) => { - const entities = options.workspaceEntities.map((entityClass) => + const workspaceEntities = await this.loadEntities( + options.workspaceEntities, + ); + + const entities = workspaceEntities.map((entityClass) => entitySchemaFactory.create(entityClass), ); @@ -80,7 +93,11 @@ export class TwentyORMCoreModule scopedWorkspaceDatasourceFactory: ScopedWorkspaceDatasourceFactory, options: TwentyORMOptions, ) => { - const entities = options.workspaceEntities.map((entityClass) => + const workspaceEntities = await this.loadEntities( + options.workspaceEntities, + ); + + const entities = workspaceEntities.map((entityClass) => entitySchemaFactory.create(entityClass), ); @@ -123,4 +140,29 @@ export class TwentyORMCoreModule } } } + + private static async loadEntities( + workspaceEntities: (Type | string)[], + ): Promise[]> { + const [entityClassesOrSchemas, entityDirectories] = splitClassesAndStrings( + workspaceEntities || [], + ); + const importedEntities = await importClassesFromDirectories( + // Only `log` function is used under importClassesFromDirectories function + this.logger as unknown as TypeORMLogger, + entityDirectories, + ); + const entities = [ + ...entityClassesOrSchemas, + ...(importedEntities as Type[]), + ]; + + return entities.filter( + (entity) => + // Filter out CustomWorkspaceEntity as it's a partial entity handled separately + entity.name !== CustomWorkspaceEntity.name && + // Filter out BaseWorkspaceEntity as it's a base entity and should not be included in the workspace entities + entity.name !== BaseWorkspaceEntity.name, + ); + } } diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/split-classes-and-strings.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/split-classes-and-strings.util.ts new file mode 100644 index 00000000000..4a062f022d0 --- /dev/null +++ b/packages/twenty-server/src/engine/twenty-orm/utils/split-classes-and-strings.util.ts @@ -0,0 +1,8 @@ +export const splitClassesAndStrings = ( + classesAndStrings: (string | T)[], +): [T[], string[]] => { + return [ + classesAndStrings.filter((cls): cls is T => typeof cls !== 'string'), + classesAndStrings.filter((str): str is string => typeof str === 'string'), + ]; +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts index 9da521e0246..eaf55f33a44 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts @@ -7,7 +7,7 @@ import { FieldComparatorResult, } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; import { ComputedPartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; -import { ComputedPartialObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; +import { ComputedPartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; @@ -36,7 +36,7 @@ export class WorkspaceFieldComparator { public compare( originalObjectMetadata: ObjectMetadataEntity, - standardObjectMetadata: ComputedPartialObjectMetadata, + standardObjectMetadata: ComputedPartialWorkspaceEntity, ): FieldComparatorResult[] { const result: FieldComparatorResult[] = []; const fieldPropertiesToUpdateMap: Record< diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts index 40f1ad2d851..9ab7f2f27f0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts @@ -7,7 +7,7 @@ import { ComparatorAction, ObjectComparatorResult, } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { ComputedPartialObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; +import { ComputedPartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; @@ -28,7 +28,7 @@ export class WorkspaceObjectComparator { public compare( originalObjectMetadata: ObjectMetadataEntity | undefined, - standardObjectMetadata: ComputedPartialObjectMetadata, + standardObjectMetadata: ComputedPartialWorkspaceEntity, ): ObjectComparatorResult { // If the object doesn't exist in the original metadata, we need to create it if (!originalObjectMetadata) { @@ -38,7 +38,8 @@ export class WorkspaceObjectComparator { }; } - const objectPropertiesToUpdate: Partial = {}; + const objectPropertiesToUpdate: Partial = + {}; // Only compare properties that are not ignored const partialOriginalObjectMetadata = transformMetadataForComparison( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts index 26f58ba80b2..9a907f3c3d6 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; -import { PartialObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; +import { PartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; import { FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface'; import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util'; @@ -18,19 +18,19 @@ export class StandardObjectFactory { standardObjectMetadataDefinitions: (typeof BaseWorkspaceEntity)[], context: WorkspaceSyncContext, workspaceFeatureFlagsMap: FeatureFlagMap, - ): PartialObjectMetadata[] { + ): PartialWorkspaceEntity[] { return standardObjectMetadataDefinitions .map((metadata) => this.createObjectMetadata(metadata, context, workspaceFeatureFlagsMap), ) - .filter((metadata): metadata is PartialObjectMetadata => !!metadata); + .filter((metadata): metadata is PartialWorkspaceEntity => !!metadata); } private createObjectMetadata( target: typeof BaseWorkspaceEntity, context: WorkspaceSyncContext, workspaceFeatureFlagsMap: FeatureFlagMap, - ): PartialObjectMetadata | undefined { + ): PartialWorkspaceEntity | undefined { const workspaceEntityMetadataArgs = metadataArgsStorage.filterEntities(target); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts index c39a440a77c..efc061bc73a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts @@ -2,7 +2,7 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/ import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { ComputedPartialFieldMetadata } from './partial-field-metadata.interface'; -import { ComputedPartialObjectMetadata } from './partial-object-metadata.interface'; +import { ComputedPartialWorkspaceEntity } from './partial-object-metadata.interface'; export const enum ComparatorAction { SKIP = 'SKIP', @@ -32,9 +32,9 @@ export interface ComparatorDeleteResult { export type ObjectComparatorResult = | ComparatorSkipResult - | ComparatorCreateResult + | ComparatorCreateResult | ComparatorUpdateResult< - Partial & { id: string } + Partial & { id: string } >; export type FieldComparatorResult = diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/mapped-metadata.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/mapped-metadata.interface.ts index fc4f329fa71..c912000d461 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/mapped-metadata.interface.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/mapped-metadata.interface.ts @@ -1,13 +1,13 @@ import { PartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; -import { PartialObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; +import { PartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; export type MappedFieldMetadata = Record; -export interface MappedObjectMetadata - extends Omit { +export interface MappedWorkspaceEntity + extends Omit { fields: MappedFieldMetadata; } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts index 897fc635aa9..18cf5b3f2a3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts @@ -5,7 +5,7 @@ import { } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; import { ObjectMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface'; -export type PartialObjectMetadata = Omit< +export type PartialWorkspaceEntity = Omit< ObjectMetadataInterface, 'id' | 'standardId' | 'fromRelations' | 'toRelations' | 'fields' | 'isActive' > & { @@ -16,8 +16,8 @@ export type PartialObjectMetadata = Omit< fields: (PartialFieldMetadata | PartialComputedFieldMetadata)[]; }; -export type ComputedPartialObjectMetadata = Omit< - PartialObjectMetadata, +export type ComputedPartialWorkspaceEntity = Omit< + PartialWorkspaceEntity, 'standardId' | 'fields' > & { standardId: string | null; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts index f55e0160925..bba9e1ac68c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts @@ -1,61 +1,61 @@ -import { ActivityTargetObjectMetadata } from 'src/modules/activity/standard-objects/activity-target.object-metadata'; -import { ActivityObjectMetadata } from 'src/modules/activity/standard-objects/activity.object-metadata'; -import { ApiKeyObjectMetadata } from 'src/modules/api-key/standard-objects/api-key.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; -import { CommentObjectMetadata } from 'src/modules/activity/standard-objects/comment.object-metadata'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { FavoriteObjectMetadata } from 'src/modules/favorite/standard-objects/favorite.object-metadata'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { ViewFieldObjectMetadata } from 'src/modules/view/standard-objects/view-field.object-metadata'; -import { ViewFilterObjectMetadata } from 'src/modules/view/standard-objects/view-filter.object-metadata'; -import { ViewSortObjectMetadata } from 'src/modules/view/standard-objects/view-sort.object-metadata'; -import { ViewObjectMetadata } from 'src/modules/view/standard-objects/view.object-metadata'; -import { WebhookObjectMetadata } from 'src/modules/webhook/standard-objects/webhook.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { AuditLogObjectMetadata } from 'src/modules/timeline/standard-objects/audit-log.object-metadata'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; -import { BehavioralEventObjectMetadata } from 'src/modules/timeline/standard-objects/behavioral-event.object-metadata'; +import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity'; +import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity'; +import { ApiKeyWorkspaceEntity } from 'src/modules/api-key/standard-objects/api-key.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; +import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity'; +import { ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter.workspace-entity'; +import { ViewSortWorkspaceEntity } from 'src/modules/view/standard-objects/view-sort.workspace-entity'; +import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity'; +import { WebhookWorkspaceEntity } from 'src/modules/webhook/standard-objects/webhook.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { AuditLogWorkspaceEntity } from 'src/modules/timeline/standard-objects/audit-log.workspace-entity'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { BehavioralEventWorkspaceEntity } from 'src/modules/timeline/standard-objects/behavioral-event.workspace-entity'; export const standardObjectMetadataDefinitions = [ - ActivityTargetObjectMetadata, - ActivityObjectMetadata, - ApiKeyObjectMetadata, - AuditLogObjectMetadata, - AttachmentObjectMetadata, - BehavioralEventObjectMetadata, - BlocklistObjectMetadata, - CalendarEventObjectMetadata, - CalendarChannelObjectMetadata, - CalendarChannelEventAssociationObjectMetadata, - CalendarEventParticipantObjectMetadata, - CommentObjectMetadata, - CompanyObjectMetadata, - ConnectedAccountObjectMetadata, - FavoriteObjectMetadata, - OpportunityObjectMetadata, - PersonObjectMetadata, - TimelineActivityObjectMetadata, - ViewFieldObjectMetadata, - ViewFilterObjectMetadata, - ViewSortObjectMetadata, - ViewObjectMetadata, - WebhookObjectMetadata, - WorkspaceMemberObjectMetadata, - MessageThreadObjectMetadata, - MessageObjectMetadata, - MessageChannelObjectMetadata, - MessageParticipantObjectMetadata, - MessageChannelMessageAssociationObjectMetadata, + ActivityTargetWorkspaceEntity, + ActivityWorkspaceEntity, + ApiKeyWorkspaceEntity, + AuditLogWorkspaceEntity, + AttachmentWorkspaceEntity, + BehavioralEventWorkspaceEntity, + BlocklistWorkspaceEntity, + CalendarEventWorkspaceEntity, + CalendarChannelWorkspaceEntity, + CalendarChannelEventAssociationWorkspaceEntity, + CalendarEventParticipantWorkspaceEntity, + CommentWorkspaceEntity, + CompanyWorkspaceEntity, + ConnectedAccountWorkspaceEntity, + FavoriteWorkspaceEntity, + OpportunityWorkspaceEntity, + PersonWorkspaceEntity, + TimelineActivityWorkspaceEntity, + ViewFieldWorkspaceEntity, + ViewFilterWorkspaceEntity, + ViewSortWorkspaceEntity, + ViewWorkspaceEntity, + WebhookWorkspaceEntity, + WorkspaceMemberWorkspaceEntity, + MessageThreadWorkspaceEntity, + MessageWorkspaceEntity, + MessageChannelWorkspaceEntity, + MessageParticipantWorkspaceEntity, + MessageChannelMessageAssociationWorkspaceEntity, ]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts index 539da1bf60d..6d0a7a9d39a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts @@ -1,4 +1,4 @@ -import { ComputedPartialObjectMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; +import { ComputedPartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; import { ComputedPartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; @@ -7,9 +7,9 @@ import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-met export class WorkspaceSyncStorage { // Object metadata - private readonly _objectMetadataCreateCollection: ComputedPartialObjectMetadata[] = + private readonly _objectMetadataCreateCollection: ComputedPartialWorkspaceEntity[] = []; - private readonly _objectMetadataUpdateCollection: (Partial & { + private readonly _objectMetadataUpdateCollection: (Partial & { id: string; })[] = []; private readonly _objectMetadataDeleteCollection: ObjectMetadataEntity[] = []; @@ -68,12 +68,12 @@ export class WorkspaceSyncStorage { return this._relationMetadataDeleteCollection; } - addCreateObjectMetadata(object: ComputedPartialObjectMetadata) { + addCreateObjectMetadata(object: ComputedPartialWorkspaceEntity) { this._objectMetadataCreateCollection.push(object); } addUpdateObjectMetadata( - object: Partial & { id: string }, + object: Partial & { id: string }, ) { this._objectMetadataUpdateCollection.push(object); } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/types/object-record.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/types/object-record.ts index 81d63c22647..d517a6aeda8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/types/object-record.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/types/object-record.ts @@ -1,9 +1,19 @@ +import { ObjectLiteral } from 'typeorm'; + import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -export type ObjectRecord = { +export type ObjectRecord = { [K in keyof T as T[K] extends BaseWorkspaceEntity ? `${Extract}Id` - : K]: T[K] extends BaseWorkspaceEntity ? string : T[K]; + : K]: T[K] extends BaseWorkspaceEntity + ? string + : T[K] extends BaseWorkspaceEntity[] + ? string[] + : T[K]; } & { - [K in keyof T]: T[K] extends BaseWorkspaceEntity ? ObjectRecord : T[K]; + [K in keyof T]: T[K] extends BaseWorkspaceEntity + ? ObjectRecord + : T[K] extends BaseWorkspaceEntity[] + ? ObjectRecord[] + : T[K]; }; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-object.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-object.util.ts index 31b7671cc51..c45503534a7 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-object.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-object.util.ts @@ -1,6 +1,6 @@ import { - ComputedPartialObjectMetadata, - PartialObjectMetadata, + ComputedPartialWorkspaceEntity, + PartialWorkspaceEntity, } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; import { ComputedPartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; @@ -12,12 +12,12 @@ import { } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util'; export const computeStandardObject = ( - standardObjectMetadata: Omit & { + standardObjectMetadata: Omit & { standardId: string | null; }, originalObjectMetadata: ObjectMetadataEntity, customObjectMetadataCollection: ObjectMetadataEntity[] = [], -): ComputedPartialObjectMetadata => { +): ComputedPartialWorkspaceEntity => { const fields: ComputedPartialFieldMetadata[] = []; for (const partialFieldMetadata of standardObjectMetadata.fields) { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util.ts index 4ea82fe9dc7..0bfec2265b9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util.ts @@ -1,7 +1,8 @@ import { camelCase } from 'src/utils/camel-case'; +const classSuffix = 'WorkspaceEntity'; + export const convertClassNameToObjectMetadataName = (name: string): string => { - const classSuffix = 'ObjectMetadata'; let objectName = camelCase(name); if (objectName.endsWith(classSuffix)) { diff --git a/packages/twenty-server/src/modules/activity/standard-objects/activity-target.object-metadata.ts b/packages/twenty-server/src/modules/activity/standard-objects/activity-target.workspace-entity.ts similarity index 78% rename from packages/twenty-server/src/modules/activity/standard-objects/activity-target.object-metadata.ts rename to packages/twenty-server/src/modules/activity/standard-objects/activity-target.workspace-entity.ts index a9321dec2a7..f2b03bec709 100644 --- a/packages/twenty-server/src/modules/activity/standard-objects/activity-target.object-metadata.ts +++ b/packages/twenty-server/src/modules/activity/standard-objects/activity-target.workspace-entity.ts @@ -3,11 +3,11 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { ACTIVITY_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { ActivityObjectMetadata } from 'src/modules/activity/standard-objects/activity.object-metadata'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; @@ -26,7 +26,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class ActivityTargetObjectMetadata extends BaseWorkspaceEntity { +export class ActivityTargetWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceRelation({ standardId: ACTIVITY_TARGET_STANDARD_FIELD_IDS.activity, type: RelationMetadataType.MANY_TO_ONE, @@ -34,11 +34,11 @@ export class ActivityTargetObjectMetadata extends BaseWorkspaceEntity { description: 'ActivityTarget activity', icon: 'IconNotes', joinColumn: 'activityId', - inverseSideTarget: () => ActivityObjectMetadata, + inverseSideTarget: () => ActivityWorkspaceEntity, inverseSideFieldKey: 'activityTargets', }) @WorkspaceIsNullable() - activity: Relation; + activity: Relation; @WorkspaceRelation({ standardId: ACTIVITY_TARGET_STANDARD_FIELD_IDS.person, @@ -47,11 +47,11 @@ export class ActivityTargetObjectMetadata extends BaseWorkspaceEntity { description: 'ActivityTarget person', icon: 'IconUser', joinColumn: 'personId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'activityTargets', }) @WorkspaceIsNullable() - person: Relation; + person: Relation; @WorkspaceRelation({ standardId: ACTIVITY_TARGET_STANDARD_FIELD_IDS.company, @@ -60,11 +60,11 @@ export class ActivityTargetObjectMetadata extends BaseWorkspaceEntity { description: 'ActivityTarget company', icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'activityTargets', }) @WorkspaceIsNullable() - company: Relation; + company: Relation; @WorkspaceRelation({ standardId: ACTIVITY_TARGET_STANDARD_FIELD_IDS.opportunity, @@ -73,11 +73,11 @@ export class ActivityTargetObjectMetadata extends BaseWorkspaceEntity { description: 'ActivityTarget opportunity', icon: 'IconTargetArrow', joinColumn: 'opportunityId', - inverseSideTarget: () => OpportunityObjectMetadata, + inverseSideTarget: () => OpportunityWorkspaceEntity, inverseSideFieldKey: 'activityTargets', }) @WorkspaceIsNullable() - opportunity: Relation; + opportunity: Relation; @WorkspaceDynamicRelation({ type: RelationMetadataType.MANY_TO_ONE, diff --git a/packages/twenty-server/src/modules/activity/standard-objects/activity.object-metadata.ts b/packages/twenty-server/src/modules/activity/standard-objects/activity.workspace-entity.ts similarity index 80% rename from packages/twenty-server/src/modules/activity/standard-objects/activity.object-metadata.ts rename to packages/twenty-server/src/modules/activity/standard-objects/activity.workspace-entity.ts index 4b44af02c68..aa13ddea2e1 100644 --- a/packages/twenty-server/src/modules/activity/standard-objects/activity.object-metadata.ts +++ b/packages/twenty-server/src/modules/activity/standard-objects/activity.workspace-entity.ts @@ -7,11 +7,11 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ActivityTargetObjectMetadata } from 'src/modules/activity/standard-objects/activity-target.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; -import { CommentObjectMetadata } from 'src/modules/activity/standard-objects/comment.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -29,7 +29,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class ActivityObjectMetadata extends BaseWorkspaceEntity { +export class ActivityWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: ACTIVITY_STANDARD_FIELD_IDS.title, type: FieldMetadataType.TEXT, @@ -94,11 +94,11 @@ export class ActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Activity targets', icon: 'IconCheckbox', type: RelationMetadataType.ONE_TO_MANY, - inverseSideTarget: () => ActivityTargetObjectMetadata, + inverseSideTarget: () => ActivityTargetWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - activityTargets: Relation; + activityTargets: Relation; @WorkspaceRelation({ standardId: ACTIVITY_STANDARD_FIELD_IDS.attachments, @@ -106,11 +106,11 @@ export class ActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Activity attachments', icon: 'IconFileImport', type: RelationMetadataType.ONE_TO_MANY, - inverseSideTarget: () => AttachmentObjectMetadata, + inverseSideTarget: () => AttachmentWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - attachments: Relation; + attachments: Relation; @WorkspaceRelation({ standardId: ACTIVITY_STANDARD_FIELD_IDS.comments, @@ -118,11 +118,11 @@ export class ActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Activity comments', icon: 'IconComment', type: RelationMetadataType.ONE_TO_MANY, - inverseSideTarget: () => CommentObjectMetadata, + inverseSideTarget: () => CommentWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - comments: Relation; + comments: Relation; @WorkspaceRelation({ standardId: ACTIVITY_STANDARD_FIELD_IDS.author, @@ -130,13 +130,13 @@ export class ActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Activity author', icon: 'IconUserCircle', type: RelationMetadataType.MANY_TO_ONE, - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'authoredActivities', onDelete: RelationOnDeleteAction.SET_NULL, joinColumn: 'authorId', }) @WorkspaceIsNullable() - author: Relation; + author: Relation; @WorkspaceRelation({ standardId: ACTIVITY_STANDARD_FIELD_IDS.assignee, @@ -144,11 +144,11 @@ export class ActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Activity assignee', icon: 'IconUserCircle', type: RelationMetadataType.MANY_TO_ONE, - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'assignedActivities', onDelete: RelationOnDeleteAction.SET_NULL, joinColumn: 'assigneeId', }) @WorkspaceIsNullable() - assignee: Relation; + assignee: Relation; } diff --git a/packages/twenty-server/src/modules/activity/standard-objects/comment.object-metadata.ts b/packages/twenty-server/src/modules/activity/standard-objects/comment.workspace-entity.ts similarity index 79% rename from packages/twenty-server/src/modules/activity/standard-objects/comment.object-metadata.ts rename to packages/twenty-server/src/modules/activity/standard-objects/comment.workspace-entity.ts index b9b15a3c4e9..2392857f463 100644 --- a/packages/twenty-server/src/modules/activity/standard-objects/comment.object-metadata.ts +++ b/packages/twenty-server/src/modules/activity/standard-objects/comment.workspace-entity.ts @@ -3,9 +3,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { COMMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ActivityObjectMetadata } from 'src/modules/activity/standard-objects/activity.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -23,7 +23,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class CommentObjectMetadata extends BaseWorkspaceEntity { +export class CommentWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: COMMENT_STANDARD_FIELD_IDS.body, type: FieldMetadataType.TEXT, @@ -40,10 +40,10 @@ export class CommentObjectMetadata extends BaseWorkspaceEntity { description: 'Comment author', icon: 'IconCircleUser', joinColumn: 'authorId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'authoredComments', }) - author: Relation; + author: Relation; @WorkspaceRelation({ standardId: COMMENT_STANDARD_FIELD_IDS.activity, @@ -52,8 +52,8 @@ export class CommentObjectMetadata extends BaseWorkspaceEntity { description: 'Comment activity', icon: 'IconNotes', joinColumn: 'activityId', - inverseSideTarget: () => ActivityObjectMetadata, + inverseSideTarget: () => ActivityWorkspaceEntity, inverseSideFieldKey: 'comments', }) - activity: Relation; + activity: Relation; } diff --git a/packages/twenty-server/src/modules/api-key/standard-objects/api-key.object-metadata.ts b/packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts similarity index 95% rename from packages/twenty-server/src/modules/api-key/standard-objects/api-key.object-metadata.ts rename to packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts index fcf194da743..40159e093a8 100644 --- a/packages/twenty-server/src/modules/api-key/standard-objects/api-key.object-metadata.ts +++ b/packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts @@ -4,7 +4,7 @@ import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { API_KEY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; @@ -18,7 +18,7 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class ApiKeyObjectMetadata extends BaseWorkspaceEntity { +export class ApiKeyWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: API_KEY_STANDARD_FIELD_IDS.name, type: FieldMetadataType.TEXT, diff --git a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.object-metadata.ts b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts similarity index 79% rename from packages/twenty-server/src/modules/attachment/standard-objects/attachment.object-metadata.ts rename to packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts index 68d06c8627b..42af628b9e0 100644 --- a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.object-metadata.ts +++ b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts @@ -4,12 +4,12 @@ import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/fi import { ATTACHMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { ActivityObjectMetadata } from 'src/modules/activity/standard-objects/activity.object-metadata'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -29,7 +29,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class AttachmentObjectMetadata extends BaseWorkspaceEntity { +export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: ATTACHMENT_STANDARD_FIELD_IDS.name, type: FieldMetadataType.TEXT, @@ -64,10 +64,10 @@ export class AttachmentObjectMetadata extends BaseWorkspaceEntity { description: 'Attachment author', icon: 'IconCircleUser', joinColumn: 'authorId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'authoredAttachments', }) - author: Relation; + author: Relation; @WorkspaceRelation({ standardId: ATTACHMENT_STANDARD_FIELD_IDS.activity, @@ -76,11 +76,11 @@ export class AttachmentObjectMetadata extends BaseWorkspaceEntity { description: 'Attachment activity', icon: 'IconNotes', joinColumn: 'activityId', - inverseSideTarget: () => ActivityObjectMetadata, + inverseSideTarget: () => ActivityWorkspaceEntity, inverseSideFieldKey: 'attachments', }) @WorkspaceIsNullable() - activity: Relation; + activity: Relation; @WorkspaceRelation({ standardId: ATTACHMENT_STANDARD_FIELD_IDS.person, @@ -89,11 +89,11 @@ export class AttachmentObjectMetadata extends BaseWorkspaceEntity { description: 'Attachment person', icon: 'IconUser', joinColumn: 'personId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'attachments', }) @WorkspaceIsNullable() - person: Relation; + person: Relation; @WorkspaceRelation({ standardId: ATTACHMENT_STANDARD_FIELD_IDS.company, @@ -102,11 +102,11 @@ export class AttachmentObjectMetadata extends BaseWorkspaceEntity { description: 'Attachment company', icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'attachments', }) @WorkspaceIsNullable() - company: Relation; + company: Relation; @WorkspaceRelation({ standardId: ATTACHMENT_STANDARD_FIELD_IDS.opportunity, @@ -115,11 +115,11 @@ export class AttachmentObjectMetadata extends BaseWorkspaceEntity { description: 'Attachment opportunity', icon: 'IconBuildingSkyscraper', joinColumn: 'opportunityId', - inverseSideTarget: () => OpportunityObjectMetadata, + inverseSideTarget: () => OpportunityWorkspaceEntity, inverseSideFieldKey: 'attachments', }) @WorkspaceIsNullable() - opportunity: Relation; + opportunity: Relation; @WorkspaceDynamicRelation({ type: RelationMetadataType.MANY_TO_ONE, diff --git a/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-person.listener.ts b/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-person.listener.ts index 52b8119fa62..67fa7e7dfa8 100644 --- a/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-person.listener.ts +++ b/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-person.listener.ts @@ -14,7 +14,7 @@ import { UnmatchParticipantJobData, UnmatchParticipantJob, } from 'src/modules/calendar-messaging-participant/jobs/unmatch-participant.job'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Injectable() export class ParticipantPersonListener { @@ -25,7 +25,7 @@ export class ParticipantPersonListener { @OnEvent('person.created') async handleCreatedEvent( - payload: ObjectRecordCreateEvent, + payload: ObjectRecordCreateEvent, ) { if (payload.properties.after.email === null) { return; @@ -43,7 +43,7 @@ export class ParticipantPersonListener { @OnEvent('person.updated') async handleUpdatedEvent( - payload: ObjectRecordUpdateEvent, + payload: ObjectRecordUpdateEvent, ) { if ( objectRecordUpdateEventChangedProperties( diff --git a/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-workspace-member.listener.ts b/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-workspace-member.listener.ts index 467764253b1..6c8de2e4465 100644 --- a/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-workspace-member.listener.ts +++ b/packages/twenty-server/src/modules/calendar-messaging-participant/listeners/participant-workspace-member.listener.ts @@ -14,7 +14,7 @@ import { UnmatchParticipantJobData, UnmatchParticipantJob, } from 'src/modules/calendar-messaging-participant/jobs/unmatch-participant.job'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Injectable() export class ParticipantWorkspaceMemberListener { @@ -25,7 +25,7 @@ export class ParticipantWorkspaceMemberListener { @OnEvent('workspaceMember.created') async handleCreatedEvent( - payload: ObjectRecordCreateEvent, + payload: ObjectRecordCreateEvent, ) { if (payload.properties.after.userEmail === null) { return; @@ -43,7 +43,7 @@ export class ParticipantWorkspaceMemberListener { @OnEvent('workspaceMember.updated') async handleUpdatedEvent( - payload: ObjectRecordUpdateEvent, + payload: ObjectRecordUpdateEvent, ) { if ( objectRecordUpdateEventChangedProperties( diff --git a/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.module.ts b/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.module.ts index 1502297e4a2..eac7dd9c797 100644 --- a/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.module.ts +++ b/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.module.ts @@ -3,12 +3,12 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { AddPersonIdAndWorkspaceMemberIdService } from 'src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Module({ imports: [ WorkspaceDataSourceModule, - ObjectMetadataRepositoryModule.forFeature([PersonObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([PersonWorkspaceEntity]), ], providers: [AddPersonIdAndWorkspaceMemberIdService], exports: [AddPersonIdAndWorkspaceMemberIdService], diff --git a/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service.ts b/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service.ts index 8aa9a6d95f7..aa6eb282a97 100644 --- a/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service.ts +++ b/packages/twenty-server/src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service.ts @@ -5,13 +5,13 @@ import { EntityManager } from 'typeorm'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { PersonRepository } from 'src/modules/person/repositories/person.repository'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Injectable() export class AddPersonIdAndWorkspaceMemberIdService { constructor( private readonly workspaceDataSourceService: WorkspaceDataSourceService, - @InjectObjectMetadataRepository(PersonObjectMetadata) + @InjectObjectMetadataRepository(PersonWorkspaceEntity) private readonly personRepository: PersonRepository, ) {} diff --git a/packages/twenty-server/src/modules/calendar/commands/calendar-commands.module.ts b/packages/twenty-server/src/modules/calendar/commands/calendar-commands.module.ts index 75d0cebbd32..20b187004c8 100644 --- a/packages/twenty-server/src/modules/calendar/commands/calendar-commands.module.ts +++ b/packages/twenty-server/src/modules/calendar/commands/calendar-commands.module.ts @@ -3,14 +3,14 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { GoogleCalendarSyncCommand } from 'src/modules/calendar/commands/google-calendar-sync.command'; import { WorkspaceGoogleCalendarSyncModule } from 'src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.module'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - CalendarChannelObjectMetadata, + ConnectedAccountWorkspaceEntity, + CalendarChannelWorkspaceEntity, ]), WorkspaceGoogleCalendarSyncModule, ], diff --git a/packages/twenty-server/src/modules/calendar/jobs/blocklist-item-delete-calendar-events.job.ts b/packages/twenty-server/src/modules/calendar/jobs/blocklist-item-delete-calendar-events.job.ts index 8fe95c736ca..a3196a02a45 100644 --- a/packages/twenty-server/src/modules/calendar/jobs/blocklist-item-delete-calendar-events.job.ts +++ b/packages/twenty-server/src/modules/calendar/jobs/blocklist-item-delete-calendar-events.job.ts @@ -6,10 +6,10 @@ import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repos import { CalendarChannelEventAssociationRepository } from 'src/modules/calendar/repositories/calendar-channel-event-association.repository'; import { CalendarChannelRepository } from 'src/modules/calendar/repositories/calendar-channel.repository'; import { CalendarEventCleanerService } from 'src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; import { BlocklistRepository } from 'src/modules/connected-account/repositories/blocklist.repository'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; export type BlocklistItemDeleteCalendarEventsJobData = { workspaceId: string; @@ -25,13 +25,13 @@ export class BlocklistItemDeleteCalendarEventsJob ); constructor( - @InjectObjectMetadataRepository(CalendarChannelObjectMetadata) + @InjectObjectMetadataRepository(CalendarChannelWorkspaceEntity) private readonly calendarChannelRepository: CalendarChannelRepository, @InjectObjectMetadataRepository( - CalendarChannelEventAssociationObjectMetadata, + CalendarChannelEventAssociationWorkspaceEntity, ) private readonly calendarChannelEventAssociationRepository: CalendarChannelEventAssociationRepository, - @InjectObjectMetadataRepository(BlocklistObjectMetadata) + @InjectObjectMetadataRepository(BlocklistWorkspaceEntity) private readonly blocklistRepository: BlocklistRepository, private readonly calendarEventCleanerService: CalendarEventCleanerService, ) {} diff --git a/packages/twenty-server/src/modules/calendar/jobs/blocklist-reimport-calendar-events.job.ts b/packages/twenty-server/src/modules/calendar/jobs/blocklist-reimport-calendar-events.job.ts index 4ae565e1b90..85660dae7d5 100644 --- a/packages/twenty-server/src/modules/calendar/jobs/blocklist-reimport-calendar-events.job.ts +++ b/packages/twenty-server/src/modules/calendar/jobs/blocklist-reimport-calendar-events.job.ts @@ -5,7 +5,7 @@ import { MessageQueueJob } from 'src/engine/integrations/message-queue/interface import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { GoogleCalendarSyncService } from 'src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; export type BlocklistReimportCalendarEventsJobData = { workspaceId: string; @@ -20,7 +20,7 @@ export class BlocklistReimportCalendarEventsJob private readonly logger = new Logger(BlocklistReimportCalendarEventsJob.name); constructor( - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, private readonly googleCalendarSyncService: GoogleCalendarSyncService, ) {} diff --git a/packages/twenty-server/src/modules/calendar/jobs/calendar-create-company-and-contact-after-sync.job.ts b/packages/twenty-server/src/modules/calendar/jobs/calendar-create-company-and-contact-after-sync.job.ts index 4220a2443e7..2e9d9d238a8 100644 --- a/packages/twenty-server/src/modules/calendar/jobs/calendar-create-company-and-contact-after-sync.job.ts +++ b/packages/twenty-server/src/modules/calendar/jobs/calendar-create-company-and-contact-after-sync.job.ts @@ -5,8 +5,8 @@ import { MessageQueueJob } from 'src/engine/integrations/message-queue/interface import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { CalendarChannelRepository } from 'src/modules/calendar/repositories/calendar-channel.repository'; import { CalendarEventParticipantRepository } from 'src/modules/calendar/repositories/calendar-event-participant.repository'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { CreateCompanyAndContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service'; export type CalendarCreateCompanyAndContactAfterSyncJobData = { @@ -23,9 +23,9 @@ export class CalendarCreateCompanyAndContactAfterSyncJob ); constructor( private readonly createCompanyAndContactService: CreateCompanyAndContactService, - @InjectObjectMetadataRepository(CalendarChannelObjectMetadata) + @InjectObjectMetadataRepository(CalendarChannelWorkspaceEntity) private readonly calendarChannelService: CalendarChannelRepository, - @InjectObjectMetadataRepository(CalendarEventParticipantObjectMetadata) + @InjectObjectMetadataRepository(CalendarEventParticipantWorkspaceEntity) private readonly calendarEventParticipantRepository: CalendarEventParticipantRepository, ) {} diff --git a/packages/twenty-server/src/modules/calendar/jobs/calendar-job.module.ts b/packages/twenty-server/src/modules/calendar/jobs/calendar-job.module.ts index b9ea192d4bc..4888d98fc0f 100644 --- a/packages/twenty-server/src/modules/calendar/jobs/calendar-job.module.ts +++ b/packages/twenty-server/src/modules/calendar/jobs/calendar-job.module.ts @@ -8,22 +8,22 @@ import { DeleteConnectedAccountAssociatedCalendarDataJob } from 'src/modules/cal import { GoogleCalendarSyncJob } from 'src/modules/calendar/jobs/google-calendar-sync.job'; import { CalendarEventCleanerModule } from 'src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.module'; import { GoogleCalendarSyncModule } from 'src/modules/calendar/services/google-calendar-sync/google-calendar-sync.module'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { AutoCompaniesAndContactsCreationModule } from 'src/modules/connected-account/auto-companies-and-contacts-creation/auto-companies-and-contacts-creation.module'; import { GoogleAPIRefreshAccessTokenModule } from 'src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.module'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - CalendarChannelObjectMetadata, - CalendarChannelEventAssociationObjectMetadata, - CalendarEventParticipantObjectMetadata, - ConnectedAccountObjectMetadata, - BlocklistObjectMetadata, + CalendarChannelWorkspaceEntity, + CalendarChannelEventAssociationWorkspaceEntity, + CalendarEventParticipantWorkspaceEntity, + ConnectedAccountWorkspaceEntity, + BlocklistWorkspaceEntity, ]), CalendarEventCleanerModule, AutoCompaniesAndContactsCreationModule, diff --git a/packages/twenty-server/src/modules/calendar/listeners/calendar-blocklist.listener.ts b/packages/twenty-server/src/modules/calendar/listeners/calendar-blocklist.listener.ts index ead86369476..c1ed4f2d98e 100644 --- a/packages/twenty-server/src/modules/calendar/listeners/calendar-blocklist.listener.ts +++ b/packages/twenty-server/src/modules/calendar/listeners/calendar-blocklist.listener.ts @@ -14,7 +14,7 @@ import { BlocklistReimportCalendarEventsJobData, BlocklistReimportCalendarEventsJob, } from 'src/modules/calendar/jobs/blocklist-reimport-calendar-events.job'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; @Injectable() export class CalendarBlocklistListener { @@ -25,7 +25,7 @@ export class CalendarBlocklistListener { @OnEvent('blocklist.created') async handleCreatedEvent( - payload: ObjectRecordCreateEvent, + payload: ObjectRecordCreateEvent, ) { await this.messageQueueService.add( BlocklistItemDeleteCalendarEventsJob.name, @@ -38,7 +38,7 @@ export class CalendarBlocklistListener { @OnEvent('blocklist.deleted') async handleDeletedEvent( - payload: ObjectRecordDeleteEvent, + payload: ObjectRecordDeleteEvent, ) { await this.messageQueueService.add( BlocklistReimportCalendarEventsJob.name, @@ -52,7 +52,7 @@ export class CalendarBlocklistListener { @OnEvent('blocklist.updated') async handleUpdatedEvent( - payload: ObjectRecordUpdateEvent, + payload: ObjectRecordUpdateEvent, ) { await this.messageQueueService.add( BlocklistItemDeleteCalendarEventsJob.name, diff --git a/packages/twenty-server/src/modules/calendar/listeners/calendar-channel.listener.ts b/packages/twenty-server/src/modules/calendar/listeners/calendar-channel.listener.ts index cc2e5591630..168aace114b 100644 --- a/packages/twenty-server/src/modules/calendar/listeners/calendar-channel.listener.ts +++ b/packages/twenty-server/src/modules/calendar/listeners/calendar-channel.listener.ts @@ -9,7 +9,7 @@ import { CalendarCreateCompanyAndContactAfterSyncJobData, CalendarCreateCompanyAndContactAfterSyncJob, } from 'src/modules/calendar/jobs/calendar-create-company-and-contact-after-sync.job'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Injectable() export class CalendarChannelListener { @@ -20,7 +20,7 @@ export class CalendarChannelListener { @OnEvent('calendarChannel.updated') async handleUpdatedEvent( - payload: ObjectRecordUpdateEvent, + payload: ObjectRecordUpdateEvent, ) { if ( objectRecordChangedProperties( diff --git a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-many.pre-query.hook.ts b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-many.pre-query.hook.ts index 115d4cbe3f3..a5c8b06aa64 100644 --- a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-many.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-many.pre-query.hook.ts @@ -8,7 +8,7 @@ import { WorkspacePreQueryHook } from 'src/engine/api/graphql/workspace-query-ru import { FindManyResolverArgs } from 'src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; import { CalendarChannelEventAssociationRepository } from 'src/modules/calendar/repositories/calendar-channel-event-association.repository'; import { CanAccessCalendarEventService } from 'src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service'; @@ -18,7 +18,7 @@ export class CalendarEventFindManyPreQueryHook { constructor( @InjectObjectMetadataRepository( - CalendarChannelEventAssociationObjectMetadata, + CalendarChannelEventAssociationWorkspaceEntity, ) private readonly calendarChannelEventAssociationRepository: CalendarChannelEventAssociationRepository, private readonly canAccessCalendarEventService: CanAccessCalendarEventService, diff --git a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-one.pre-query-hook.ts b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-one.pre-query-hook.ts index cac0b8f8870..082e1b28018 100644 --- a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-one.pre-query-hook.ts +++ b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/calendar-event-find-one.pre-query-hook.ts @@ -10,13 +10,13 @@ import { FindOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver-b import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { CanAccessCalendarEventService } from 'src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service'; import { CalendarChannelEventAssociationRepository } from 'src/modules/calendar/repositories/calendar-channel-event-association.repository'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; @Injectable() export class CalendarEventFindOnePreQueryHook implements WorkspacePreQueryHook { constructor( @InjectObjectMetadataRepository( - CalendarChannelEventAssociationObjectMetadata, + CalendarChannelEventAssociationWorkspaceEntity, ) private readonly calendarChannelEventAssociationRepository: CalendarChannelEventAssociationRepository, private readonly canAccessCalendarEventService: CanAccessCalendarEventService, diff --git a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service.ts b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service.ts index 8008db95a32..0a971c32dcb 100644 --- a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service.ts +++ b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service.ts @@ -5,31 +5,31 @@ import groupBy from 'lodash.groupby'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; import { CalendarChannelRepository } from 'src/modules/calendar/repositories/calendar-channel.repository'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; import { - CalendarChannelObjectMetadata, + CalendarChannelWorkspaceEntity, CalendarChannelVisibility, -} from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +} from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Injectable() export class CanAccessCalendarEventService { constructor( - @InjectObjectMetadataRepository(CalendarChannelObjectMetadata) + @InjectObjectMetadataRepository(CalendarChannelWorkspaceEntity) private readonly calendarChannelRepository: CalendarChannelRepository, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata) + @InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity) private readonly workspaceMemberService: WorkspaceMemberRepository, ) {} public async canAccessCalendarEvent( userId: string, workspaceId: string, - calendarChannelCalendarEventAssociations: ObjectRecord[], + calendarChannelCalendarEventAssociations: ObjectRecord[], ) { const calendarChannels = await this.calendarChannelRepository.getByIds( calendarChannelCalendarEventAssociations.map( diff --git a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-query-hook.module.ts b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-query-hook.module.ts index 1e116c00e3d..0bed2914aa0 100644 --- a/packages/twenty-server/src/modules/calendar/query-hooks/calendar-query-hook.module.ts +++ b/packages/twenty-server/src/modules/calendar/query-hooks/calendar-query-hook.module.ts @@ -1,10 +1,10 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; import { CalendarEventFindManyPreQueryHook } from 'src/modules/calendar/query-hooks/calendar-event/calendar-event-find-many.pre-query.hook'; import { CalendarEventFindOnePreQueryHook } from 'src/modules/calendar/query-hooks/calendar-event/calendar-event-find-one.pre-query-hook'; import { CanAccessCalendarEventService } from 'src/modules/calendar/query-hooks/calendar-event/services/can-access-calendar-event.service'; @@ -12,10 +12,10 @@ import { CanAccessCalendarEventService } from 'src/modules/calendar/query-hooks/ @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - CalendarChannelEventAssociationObjectMetadata, - CalendarChannelObjectMetadata, - ConnectedAccountObjectMetadata, - WorkspaceMemberObjectMetadata, + CalendarChannelEventAssociationWorkspaceEntity, + CalendarChannelWorkspaceEntity, + ConnectedAccountWorkspaceEntity, + WorkspaceMemberWorkspaceEntity, ]), ], providers: [ diff --git a/packages/twenty-server/src/modules/calendar/repositories/calendar-channel-event-association.repository.ts b/packages/twenty-server/src/modules/calendar/repositories/calendar-channel-event-association.repository.ts index 8944e7910e5..89a9a28b486 100644 --- a/packages/twenty-server/src/modules/calendar/repositories/calendar-channel-event-association.repository.ts +++ b/packages/twenty-server/src/modules/calendar/repositories/calendar-channel-event-association.repository.ts @@ -4,7 +4,7 @@ import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; import { getFlattenedValuesAndValuesStringForBatchRawQuery } from 'src/modules/calendar/utils/get-flattened-values-and-values-string-for-batch-raw-query.util'; @Injectable() @@ -18,7 +18,7 @@ export class CalendarChannelEventAssociationRepository { calendarChannelId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (eventExternalIds.length === 0) { return []; } @@ -56,7 +56,7 @@ export class CalendarChannelEventAssociationRepository { calendarChannelIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (calendarChannelIds.length === 0) { return []; } @@ -117,7 +117,7 @@ export class CalendarChannelEventAssociationRepository { calendarEventIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (calendarEventIds.length === 0) { return []; } @@ -136,7 +136,7 @@ export class CalendarChannelEventAssociationRepository { public async saveCalendarChannelEventAssociations( calendarChannelEventAssociations: Omit< - ObjectRecord, + ObjectRecord, 'id' | 'createdAt' | 'updatedAt' | 'calendarChannel' | 'calendarEvent' >[], workspaceId: string, diff --git a/packages/twenty-server/src/modules/calendar/repositories/calendar-channel.repository.ts b/packages/twenty-server/src/modules/calendar/repositories/calendar-channel.repository.ts index c9305ebe31a..faff7afe45f 100644 --- a/packages/twenty-server/src/modules/calendar/repositories/calendar-channel.repository.ts +++ b/packages/twenty-server/src/modules/calendar/repositories/calendar-channel.repository.ts @@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common'; import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @Injectable() @@ -15,7 +15,7 @@ export class CalendarChannelRepository { public async getAll( workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -29,7 +29,7 @@ export class CalendarChannelRepository { public async create( calendarChannel: Pick< - ObjectRecord, + ObjectRecord, 'id' | 'connectedAccountId' | 'handle' | 'visibility' >, workspaceId: string, @@ -55,7 +55,7 @@ export class CalendarChannelRepository { connectedAccountId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -70,7 +70,7 @@ export class CalendarChannelRepository { public async getFirstByConnectedAccountId( connectedAccountId: string, workspaceId: string, - ): Promise | undefined> { + ): Promise | undefined> { const calendarChannels = await this.getByConnectedAccountId( connectedAccountId, workspaceId, @@ -83,7 +83,7 @@ export class CalendarChannelRepository { ids: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -99,7 +99,7 @@ export class CalendarChannelRepository { workspaceMemberId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/calendar/repositories/calendar-event-participant.repository.ts b/packages/twenty-server/src/modules/calendar/repositories/calendar-event-participant.repository.ts index b91e32697d4..2820a182d70 100644 --- a/packages/twenty-server/src/modules/calendar/repositories/calendar-event-participant.repository.ts +++ b/packages/twenty-server/src/modules/calendar/repositories/calendar-event-participant.repository.ts @@ -5,7 +5,7 @@ import differenceWith from 'lodash.differencewith'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { getFlattenedValuesAndValuesStringForBatchRawQuery } from 'src/modules/calendar/utils/get-flattened-values-and-values-string-for-batch-raw-query.util'; import { CalendarEventParticipant, @@ -22,7 +22,7 @@ export class CalendarEventParticipantRepository { handles: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -104,7 +104,7 @@ export class CalendarEventParticipantRepository { calendarEventParticipantIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (calendarEventParticipantIds.length === 0) { return []; } @@ -124,7 +124,7 @@ export class CalendarEventParticipantRepository { calendarEventIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (calendarEventIds.length === 0) { return []; } diff --git a/packages/twenty-server/src/modules/calendar/repositories/calendar-event.repository.ts b/packages/twenty-server/src/modules/calendar/repositories/calendar-event.repository.ts index 4ac314e84ef..f6f28918dd1 100644 --- a/packages/twenty-server/src/modules/calendar/repositories/calendar-event.repository.ts +++ b/packages/twenty-server/src/modules/calendar/repositories/calendar-event.repository.ts @@ -4,10 +4,10 @@ import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; import { getFlattenedValuesAndValuesStringForBatchRawQuery } from 'src/modules/calendar/utils/get-flattened-values-and-values-string-for-batch-raw-query.util'; import { CalendarEvent } from 'src/modules/calendar/types/calendar-event'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; @Injectable() export class CalendarEventRepository { @@ -19,7 +19,7 @@ export class CalendarEventRepository { calendarEventIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (calendarEventIds.length === 0) { return []; } @@ -39,7 +39,7 @@ export class CalendarEventRepository { iCalUIDs: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (iCalUIDs.length === 0) { return []; } @@ -80,7 +80,7 @@ export class CalendarEventRepository { offset: number, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.module.ts b/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.module.ts index 2f0d4977aa6..644371db16f 100644 --- a/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.module.ts +++ b/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.module.ts @@ -2,11 +2,11 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { CalendarEventCleanerService } from 'src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; @Module({ imports: [ - ObjectMetadataRepositoryModule.forFeature([CalendarEventObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([CalendarEventWorkspaceEntity]), ], providers: [CalendarEventCleanerService], exports: [CalendarEventCleanerService], diff --git a/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service.ts b/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service.ts index c56e046a7f1..fc8d111eca7 100644 --- a/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service.ts +++ b/packages/twenty-server/src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service.ts @@ -2,13 +2,13 @@ import { Injectable } from '@nestjs/common'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { CalendarEventRepository } from 'src/modules/calendar/repositories/calendar-event.repository'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; import { deleteUsingPagination } from 'src/modules/messaging/services/thread-cleaner/utils/delete-using-pagination.util'; @Injectable() export class CalendarEventCleanerService { constructor( - @InjectObjectMetadataRepository(CalendarEventObjectMetadata) + @InjectObjectMetadataRepository(CalendarEventWorkspaceEntity) private readonly calendarEventRepository: CalendarEventRepository, ) {} diff --git a/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.module.ts b/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.module.ts index 933335fd9b6..4eabeedb997 100644 --- a/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.module.ts +++ b/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.module.ts @@ -4,12 +4,12 @@ import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repos import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { AddPersonIdAndWorkspaceMemberIdModule } from 'src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.module'; import { CalendarEventParticipantService } from 'src/modules/calendar/services/calendar-event-participant/calendar-event-participant.service'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Module({ imports: [ WorkspaceDataSourceModule, - ObjectMetadataRepositoryModule.forFeature([PersonObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([PersonWorkspaceEntity]), AddPersonIdAndWorkspaceMemberIdModule, ], providers: [CalendarEventParticipantService], diff --git a/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.service.ts b/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.service.ts index 578babd9b2a..a9e8c0b773a 100644 --- a/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.service.ts +++ b/packages/twenty-server/src/modules/calendar/services/calendar-event-participant/calendar-event-participant.service.ts @@ -4,12 +4,12 @@ import { EntityManager } from 'typeorm'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { PersonRepository } from 'src/modules/person/repositories/person.repository'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { getFlattenedValuesAndValuesStringForBatchRawQuery } from 'src/modules/calendar/utils/get-flattened-values-and-values-string-for-batch-raw-query.util'; import { CalendarEventParticipant } from 'src/modules/calendar/types/calendar-event'; import { CalendarEventParticipantRepository } from 'src/modules/calendar/repositories/calendar-event-participant.repository'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { AddPersonIdAndWorkspaceMemberIdService } from 'src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @@ -17,15 +17,15 @@ import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metada export class CalendarEventParticipantService { constructor( private readonly workspaceDataSourceService: WorkspaceDataSourceService, - @InjectObjectMetadataRepository(CalendarEventParticipantObjectMetadata) + @InjectObjectMetadataRepository(CalendarEventParticipantWorkspaceEntity) private readonly calendarEventParticipantRepository: CalendarEventParticipantRepository, - @InjectObjectMetadataRepository(PersonObjectMetadata) + @InjectObjectMetadataRepository(PersonWorkspaceEntity) private readonly personRepository: PersonRepository, private readonly addPersonIdAndWorkspaceMemberIdService: AddPersonIdAndWorkspaceMemberIdService, ) {} public async updateCalendarEventParticipantsAfterPeopleCreation( - createdPeople: ObjectRecord[], + createdPeople: ObjectRecord[], workspaceId: string, transactionManager?: EntityManager, ): Promise { diff --git a/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.module.ts b/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.module.ts index 0b21dc0b45b..fcd5e495ce1 100644 --- a/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.module.ts +++ b/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.module.ts @@ -8,27 +8,27 @@ import { CalendarEventCleanerModule } from 'src/modules/calendar/services/calend import { CalendarEventParticipantModule } from 'src/modules/calendar/services/calendar-event-participant/calendar-event-participant.module'; import { GoogleCalendarSyncService } from 'src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service'; import { CalendarProvidersModule } from 'src/modules/calendar/services/providers/calendar-providers.module'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Module({ imports: [ CalendarProvidersModule, ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - CalendarEventObjectMetadata, - CalendarChannelObjectMetadata, - CalendarChannelEventAssociationObjectMetadata, - CalendarEventParticipantObjectMetadata, - BlocklistObjectMetadata, - PersonObjectMetadata, - WorkspaceMemberObjectMetadata, + ConnectedAccountWorkspaceEntity, + CalendarEventWorkspaceEntity, + CalendarChannelWorkspaceEntity, + CalendarChannelEventAssociationWorkspaceEntity, + CalendarEventParticipantWorkspaceEntity, + BlocklistWorkspaceEntity, + PersonWorkspaceEntity, + WorkspaceMemberWorkspaceEntity, ]), CalendarEventParticipantModule, TypeOrmModule.forFeature([FeatureFlagEntity], 'core'), diff --git a/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service.ts b/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service.ts index 1ef42e21061..6b2fc66c821 100644 --- a/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service.ts +++ b/packages/twenty-server/src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service.ts @@ -17,13 +17,13 @@ import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/work import { CalendarEventRepository } from 'src/modules/calendar/repositories/calendar-event.repository'; import { formatGoogleCalendarEvent } from 'src/modules/calendar/utils/format-google-calendar-event.util'; import { CalendarEventParticipantRepository } from 'src/modules/calendar/repositories/calendar-event-participant.repository'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; import { CalendarEventCleanerService } from 'src/modules/calendar/services/calendar-event-cleaner/calendar-event-cleaner.service'; import { CalendarEventParticipantService } from 'src/modules/calendar/services/calendar-event-participant/calendar-event-participant.service'; import { CalendarEventWithParticipants } from 'src/modules/calendar/types/calendar-event'; @@ -42,19 +42,19 @@ export class GoogleCalendarSyncService { constructor( private readonly googleCalendarClientProvider: GoogleCalendarClientProvider, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(CalendarEventObjectMetadata) + @InjectObjectMetadataRepository(CalendarEventWorkspaceEntity) private readonly calendarEventRepository: CalendarEventRepository, - @InjectObjectMetadataRepository(CalendarChannelObjectMetadata) + @InjectObjectMetadataRepository(CalendarChannelWorkspaceEntity) private readonly calendarChannelRepository: CalendarChannelRepository, @InjectObjectMetadataRepository( - CalendarChannelEventAssociationObjectMetadata, + CalendarChannelEventAssociationWorkspaceEntity, ) private readonly calendarChannelEventAssociationRepository: CalendarChannelEventAssociationRepository, - @InjectObjectMetadataRepository(CalendarEventParticipantObjectMetadata) + @InjectObjectMetadataRepository(CalendarEventParticipantWorkspaceEntity) private readonly calendarEventParticipantsRepository: CalendarEventParticipantRepository, - @InjectObjectMetadataRepository(BlocklistObjectMetadata) + @InjectObjectMetadataRepository(BlocklistWorkspaceEntity) private readonly blocklistRepository: BlocklistRepository, @InjectRepository(FeatureFlagEntity, 'core') private readonly featureFlagRepository: Repository, @@ -364,8 +364,8 @@ export class GoogleCalendarSyncService { eventExternalId: string; calendarChannelId: string; }[], - connectedAccount: ConnectedAccountObjectMetadata, - calendarChannel: CalendarChannelObjectMetadata, + connectedAccount: ConnectedAccountWorkspaceEntity, + calendarChannel: CalendarChannelWorkspaceEntity, workspaceId: string, ): Promise { const dataSourceMetadata = diff --git a/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.module.ts b/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.module.ts index d7fc7c14545..877de36e89d 100644 --- a/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.module.ts +++ b/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.module.ts @@ -2,11 +2,11 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { WorkspaceGoogleCalendarSyncService } from 'src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.service'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; @Module({ imports: [ - ObjectMetadataRepositoryModule.forFeature([CalendarChannelObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([CalendarChannelWorkspaceEntity]), ], providers: [WorkspaceGoogleCalendarSyncService], exports: [WorkspaceGoogleCalendarSyncService], diff --git a/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.service.ts b/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.service.ts index 641eff9f99d..8d68c01d88c 100644 --- a/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.service.ts +++ b/packages/twenty-server/src/modules/calendar/services/workspace-google-calendar-sync/workspace-google-calendar-sync.service.ts @@ -9,12 +9,12 @@ import { GoogleCalendarSyncJob, } from 'src/modules/calendar/jobs/google-calendar-sync.job'; import { CalendarChannelRepository } from 'src/modules/calendar/repositories/calendar-channel.repository'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; @Injectable() export class WorkspaceGoogleCalendarSyncService { constructor( - @InjectObjectMetadataRepository(CalendarChannelObjectMetadata) + @InjectObjectMetadataRepository(CalendarChannelWorkspaceEntity) private readonly calendarChannelRepository: CalendarChannelRepository, @InjectMessageQueue(MessageQueue.calendarQueue) private readonly messageQueueService: MessageQueueService, diff --git a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata.ts b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity.ts similarity index 80% rename from packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata.ts rename to packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity.ts index 67c7181ea69..bf1e82aa721 100644 --- a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata.ts +++ b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity.ts @@ -3,15 +3,15 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.decorator'; import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; @WorkspaceEntity({ standardId: STANDARD_OBJECT_IDS.calendarChannelEventAssociation, @@ -23,7 +23,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class CalendarChannelEventAssociationObjectMetadata extends BaseWorkspaceEntity { +export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS.eventExternalId, @@ -42,10 +42,10 @@ export class CalendarChannelEventAssociationObjectMetadata extends BaseWorkspace description: 'Channel ID', icon: 'IconCalendar', joinColumn: 'calendarChannelId', - inverseSideTarget: () => CalendarEventObjectMetadata, + inverseSideTarget: () => CalendarChannelWorkspaceEntity, inverseSideFieldKey: 'calendarChannelEventAssociations', }) - calendarChannel: Relation; + calendarChannel: Relation; @WorkspaceRelation({ standardId: @@ -55,8 +55,8 @@ export class CalendarChannelEventAssociationObjectMetadata extends BaseWorkspace description: 'Event ID', icon: 'IconCalendar', joinColumn: 'calendarEventId', - inverseSideTarget: () => CalendarEventObjectMetadata, + inverseSideTarget: () => CalendarEventWorkspaceEntity, inverseSideFieldKey: 'calendarChannelEventAssociations', }) - calendarEvent: Relation; + calendarEvent: Relation; } diff --git a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel.object-metadata.ts b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel.workspace-entity.ts similarity index 86% rename from packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel.object-metadata.ts rename to packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel.workspace-entity.ts index 63dcb0f3f14..0fff9a88643 100644 --- a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel.object-metadata.ts +++ b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-channel.workspace-entity.ts @@ -7,10 +7,10 @@ import { import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { CALENDAR_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -31,7 +31,7 @@ export enum CalendarChannelVisibility { }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class CalendarChannelObjectMetadata extends BaseWorkspaceEntity { +export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.handle, type: FieldMetadataType.TEXT, @@ -103,10 +103,10 @@ export class CalendarChannelObjectMetadata extends BaseWorkspaceEntity { description: 'Connected Account', icon: 'IconUserCircle', joinColumn: 'connectedAccountId', - inverseSideTarget: () => ConnectedAccountObjectMetadata, + inverseSideTarget: () => ConnectedAccountWorkspaceEntity, inverseSideFieldKey: 'calendarChannels', }) - connectedAccount: Relation; + connectedAccount: Relation; @WorkspaceRelation({ standardId: @@ -115,10 +115,10 @@ export class CalendarChannelObjectMetadata extends BaseWorkspaceEntity { label: 'Calendar Channel Event Associations', description: 'Calendar Channel Event Associations', icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelEventAssociationObjectMetadata, + inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) calendarChannelEventAssociations: Relation< - CalendarChannelEventAssociationObjectMetadata[] + CalendarChannelEventAssociationWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event-participant.object-metadata.ts b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity.ts similarity index 84% rename from packages/twenty-server/src/modules/calendar/standard-objects/calendar-event-participant.object-metadata.ts rename to packages/twenty-server/src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity.ts index a8750f3803e..ee271b43799 100644 --- a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event-participant.object-metadata.ts +++ b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity.ts @@ -3,11 +3,11 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -32,7 +32,7 @@ export enum CalendarEventParticipantResponseStatus { }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class CalendarEventParticipantObjectMetadata extends BaseWorkspaceEntity { +export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.handle, type: FieldMetadataType.TEXT, @@ -104,10 +104,10 @@ export class CalendarEventParticipantObjectMetadata extends BaseWorkspaceEntity description: 'Event ID', icon: 'IconCalendar', joinColumn: 'calendarEventId', - inverseSideTarget: () => CalendarEventObjectMetadata, + inverseSideTarget: () => CalendarEventWorkspaceEntity, inverseSideFieldKey: 'calendarEventParticipants', }) - calendarEvent: Relation; + calendarEvent: Relation; @WorkspaceRelation({ standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.person, @@ -116,11 +116,11 @@ export class CalendarEventParticipantObjectMetadata extends BaseWorkspaceEntity description: 'Person', icon: 'IconUser', joinColumn: 'personId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'calendarEventParticipants', }) @WorkspaceIsNullable() - person: Relation; + person: Relation; @WorkspaceRelation({ standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.workspaceMember, @@ -129,9 +129,9 @@ export class CalendarEventParticipantObjectMetadata extends BaseWorkspaceEntity description: 'Workspace Member', icon: 'IconUser', joinColumn: 'workspaceMemberId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'calendarEventParticipants', }) @WorkspaceIsNullable() - workspaceMember: Relation; + workspaceMember: Relation; } diff --git a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event.object-metadata.ts b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event.workspace-entity.ts similarity index 88% rename from packages/twenty-server/src/modules/calendar/standard-objects/calendar-event.object-metadata.ts rename to packages/twenty-server/src/modules/calendar/standard-objects/calendar-event.workspace-entity.ts index a79b7852c65..d8d9052d27b 100644 --- a/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event.object-metadata.ts +++ b/packages/twenty-server/src/modules/calendar/standard-objects/calendar-event.workspace-entity.ts @@ -5,13 +5,13 @@ import { RelationMetadataType, RelationOnDeleteAction, } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; -import { CalendarChannelEventAssociationObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel-event-association.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { CALENDAR_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { LinkMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/link.composite-type'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -28,7 +28,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class CalendarEventObjectMetadata extends BaseWorkspaceEntity { +export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title, type: FieldMetadataType.TEXT, @@ -158,11 +158,11 @@ export class CalendarEventObjectMetadata extends BaseWorkspaceEntity { label: 'Calendar Channel Event Associations', description: 'Calendar Channel Event Associations', icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelEventAssociationObjectMetadata, + inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) calendarChannelEventAssociations: Relation< - CalendarChannelEventAssociationObjectMetadata[] + CalendarChannelEventAssociationWorkspaceEntity[] >; @WorkspaceRelation({ @@ -171,8 +171,10 @@ export class CalendarEventObjectMetadata extends BaseWorkspaceEntity { label: 'Event Participants', description: 'Event Participants', icon: 'IconUserCircle', - inverseSideTarget: () => CalendarEventParticipantObjectMetadata, + inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) - calendarEventParticipants: Relation; + calendarEventParticipants: Relation< + CalendarEventParticipantWorkspaceEntity[] + >; } diff --git a/packages/twenty-server/src/modules/calendar/types/calendar-event.ts b/packages/twenty-server/src/modules/calendar/types/calendar-event.ts index 72818b13110..c2d7bd59660 100644 --- a/packages/twenty-server/src/modules/calendar/types/calendar-event.ts +++ b/packages/twenty-server/src/modules/calendar/types/calendar-event.ts @@ -1,9 +1,9 @@ -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; -import { CalendarEventObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event.object-metadata'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; +import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; export type CalendarEvent = Omit< - ObjectRecord, + ObjectRecord, | 'createdAt' | 'updatedAt' | 'calendarChannelEventAssociations' @@ -15,7 +15,7 @@ export type CalendarEvent = Omit< }; export type CalendarEventParticipant = Omit< - ObjectRecord, + ObjectRecord, | 'id' | 'createdAt' | 'updatedAt' diff --git a/packages/twenty-server/src/modules/calendar/utils/format-google-calendar-event.util.ts b/packages/twenty-server/src/modules/calendar/utils/format-google-calendar-event.util.ts index 6636569261a..bb8a4523a37 100644 --- a/packages/twenty-server/src/modules/calendar/utils/format-google-calendar-event.util.ts +++ b/packages/twenty-server/src/modules/calendar/utils/format-google-calendar-event.util.ts @@ -1,7 +1,7 @@ import { calendar_v3 as calendarV3 } from 'googleapis'; import { v4 } from 'uuid'; -import { CalendarEventParticipantResponseStatus } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarEventParticipantResponseStatus } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { CalendarEventWithParticipants } from 'src/modules/calendar/types/calendar-event'; export const formatGoogleCalendarEvent = ( diff --git a/packages/twenty-server/src/modules/company/standard-objects/company.object-metadata.ts b/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts similarity index 79% rename from packages/twenty-server/src/modules/company/standard-objects/company.object-metadata.ts rename to packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts index 6108e543d89..867b11e023e 100644 --- a/packages/twenty-server/src/modules/company/standard-objects/company.object-metadata.ts +++ b/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts @@ -9,15 +9,15 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { COMPANY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ActivityTargetObjectMetadata } from 'src/modules/activity/standard-objects/activity-target.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; -import { FavoriteObjectMetadata } from 'src/modules/favorite/standard-objects/favorite.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; +import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; @@ -31,7 +31,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re description: 'A company', icon: 'IconBuildingSkyscraper', }) -export class CompanyObjectMetadata extends BaseWorkspaceEntity { +export class CompanyWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: COMPANY_STANDARD_FIELD_IDS.name, type: FieldMetadataType.TEXT, @@ -130,11 +130,11 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { label: 'People', description: 'People linked to the company.', icon: 'IconUsers', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - people: Relation; + people: Relation; @WorkspaceRelation({ standardId: COMPANY_STANDARD_FIELD_IDS.accountOwner, @@ -144,12 +144,12 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { 'Your team member responsible for managing the company account', icon: 'IconUserCircle', joinColumn: 'accountOwnerId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'accountOwnerForCompanies', onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - accountOwner: Relation; + accountOwner: Relation; @WorkspaceRelation({ standardId: COMPANY_STANDARD_FIELD_IDS.activityTargets, @@ -157,11 +157,11 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { label: 'Activities', description: 'Activities tied to the company', icon: 'IconCheckbox', - inverseSideTarget: () => ActivityTargetObjectMetadata, + inverseSideTarget: () => ActivityTargetWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - activityTargets: Relation; + activityTargets: Relation; @WorkspaceRelation({ standardId: COMPANY_STANDARD_FIELD_IDS.opportunities, @@ -169,11 +169,11 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { label: 'Opportunities', description: 'Opportunities linked to the company.', icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityObjectMetadata, + inverseSideTarget: () => OpportunityWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - opportunities: Relation; + opportunities: Relation; @WorkspaceRelation({ standardId: COMPANY_STANDARD_FIELD_IDS.favorites, @@ -181,12 +181,12 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { label: 'Favorites', description: 'Favorites linked to the company', icon: 'IconHeart', - inverseSideTarget: () => FavoriteObjectMetadata, + inverseSideTarget: () => FavoriteWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - favorites: Relation; + favorites: Relation; @WorkspaceRelation({ standardId: COMPANY_STANDARD_FIELD_IDS.attachments, @@ -194,11 +194,11 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { label: 'Attachments', description: 'Attachments linked to the company', icon: 'IconFileImport', - inverseSideTarget: () => AttachmentObjectMetadata, + inverseSideTarget: () => AttachmentWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - attachments: Relation; + attachments: Relation; @WorkspaceRelation({ standardId: COMPANY_STANDARD_FIELD_IDS.timelineActivities, @@ -206,10 +206,10 @@ export class CompanyObjectMetadata extends BaseWorkspaceEntity { label: 'Timeline Activities', description: 'Timeline Activities linked to the company', icon: 'IconIconTimelineEvent', - inverseSideTarget: () => TimelineActivityObjectMetadata, + inverseSideTarget: () => TimelineActivityWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - timelineActivities: Relation; + timelineActivities: Relation; } diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/auto-companies-and-contacts-creation.module.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/auto-companies-and-contacts-creation.module.ts index ad9973928f8..7b11161265e 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/auto-companies-and-contacts-creation.module.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/auto-companies-and-contacts-creation.module.ts @@ -5,11 +5,11 @@ import { CreateCompanyAndContactService } from 'src/modules/connected-account/au import { CreateCompanyModule } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.module'; import { CreateContactModule } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.module'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { MessageParticipantModule } from 'src/modules/messaging/services/message-participant/message-participant.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; import { CalendarEventParticipantModule } from 'src/modules/calendar/services/calendar-event-participant/calendar-event-participant.module'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; @@ -18,9 +18,9 @@ import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature- CreateContactModule, CreateCompanyModule, ObjectMetadataRepositoryModule.forFeature([ - PersonObjectMetadata, - WorkspaceMemberObjectMetadata, - CalendarEventParticipantObjectMetadata, + PersonWorkspaceEntity, + WorkspaceMemberWorkspaceEntity, + CalendarEventParticipantWorkspaceEntity, ]), MessageParticipantModule, WorkspaceDataSourceModule, diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.module.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.module.ts index c353146d8dc..c93c537ec39 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.module.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.module.ts @@ -1,11 +1,13 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; import { CreateCompanyService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service'; @Module({ - imports: [ObjectMetadataRepositoryModule.forFeature([CompanyObjectMetadata])], + imports: [ + ObjectMetadataRepositoryModule.forFeature([CompanyWorkspaceEntity]), + ], providers: [CreateCompanyService], exports: [CreateCompanyService], }) diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service.ts index 27af8f98d54..2721623e948 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-company/create-company.service.ts @@ -7,13 +7,13 @@ import axios, { AxiosInstance } from 'axios'; import { CompanyRepository } from 'src/modules/company/repositories/company.repository'; import { getCompanyNameFromDomainName } from 'src/modules/calendar-messaging-participant/utils/get-company-name-from-domain-name.util'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; @Injectable() export class CreateCompanyService { private readonly httpService: AxiosInstance; constructor( - @InjectObjectMetadataRepository(CompanyObjectMetadata) + @InjectObjectMetadataRepository(CompanyWorkspaceEntity) private readonly companyRepository: CompanyRepository, ) { this.httpService = axios.create({ diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.module.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.module.ts index bd3eaa1bde6..b24586e3b9a 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.module.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.module.ts @@ -2,10 +2,10 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { CreateContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Module({ - imports: [ObjectMetadataRepositoryModule.forFeature([PersonObjectMetadata])], + imports: [ObjectMetadataRepositoryModule.forFeature([PersonWorkspaceEntity])], providers: [CreateContactService], exports: [CreateContactService], }) diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service.ts index 9521a8f25f1..a8a121526b8 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/create-contact/create-contact.service.ts @@ -6,7 +6,7 @@ import { v4 } from 'uuid'; import { PersonRepository } from 'src/modules/person/repositories/person.repository'; import { getFirstNameAndLastNameFromHandleAndDisplayName } from 'src/modules/calendar-messaging-participant/utils/get-first-name-and-last-name-from-handle-and-display-name.util'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; type ContactToCreate = { @@ -26,7 +26,7 @@ type FormattedContactToCreate = { @Injectable() export class CreateContactService { constructor( - @InjectObjectMetadataRepository(PersonObjectMetadata) + @InjectObjectMetadataRepository(PersonWorkspaceEntity) private readonly personRepository: PersonRepository, ) {} @@ -55,7 +55,7 @@ export class CreateContactService { contactsToCreate: ContactToCreate[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (contactsToCreate.length === 0) return []; const formattedContacts = this.formatContacts(contactsToCreate); diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service.ts index d3f5bbf2bb9..981110b8349 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service.ts @@ -11,8 +11,8 @@ import { PersonRepository } from 'src/modules/person/repositories/person.reposit import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository'; import { isWorkEmail } from 'src/utils/is-work-email'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { getUniqueContactsAndHandles } from 'src/modules/connected-account/auto-companies-and-contacts-creation/utils/get-unique-contacts-and-handles.util'; import { Contacts } from 'src/modules/connected-account/auto-companies-and-contacts-creation/types/contact.type'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; @@ -27,9 +27,9 @@ export class CreateCompanyAndContactService { constructor( private readonly createContactService: CreateContactService, private readonly createCompaniesService: CreateCompanyService, - @InjectObjectMetadataRepository(PersonObjectMetadata) + @InjectObjectMetadataRepository(PersonWorkspaceEntity) private readonly personRepository: PersonRepository, - @InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata) + @InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity) private readonly workspaceMemberRepository: WorkspaceMemberRepository, private readonly workspaceDataSourceService: WorkspaceDataSourceService, private readonly messageParticipantService: MessageParticipantService, @@ -43,7 +43,7 @@ export class CreateCompanyAndContactService { contactsToCreate: Contacts, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { if (!contactsToCreate || contactsToCreate.length === 0) { return []; } diff --git a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/utils/filter-out-contacts-from-company-or-workspace.util.ts b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/utils/filter-out-contacts-from-company-or-workspace.util.ts index ecc61c0663e..eadb0e9c134 100644 --- a/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/utils/filter-out-contacts-from-company-or-workspace.util.ts +++ b/packages/twenty-server/src/modules/connected-account/auto-companies-and-contacts-creation/utils/filter-out-contacts-from-company-or-workspace.util.ts @@ -1,12 +1,12 @@ import { getDomainNameFromHandle } from 'src/modules/calendar-messaging-participant/utils/get-domain-name-from-handle.util'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; import { Contacts } from 'src/modules/connected-account/auto-companies-and-contacts-creation/types/contact.type'; export function filterOutContactsFromCompanyOrWorkspace( contacts: Contacts, selfHandle: string, - workspaceMembers: ObjectRecord[], + workspaceMembers: ObjectRecord[], ): Contacts { const selfDomainName = getDomainNameFromHandle(selfHandle); diff --git a/packages/twenty-server/src/modules/connected-account/repositories/blocklist.repository.ts b/packages/twenty-server/src/modules/connected-account/repositories/blocklist.repository.ts index c68419652fd..99ec3ecbb6a 100644 --- a/packages/twenty-server/src/modules/connected-account/repositories/blocklist.repository.ts +++ b/packages/twenty-server/src/modules/connected-account/repositories/blocklist.repository.ts @@ -4,7 +4,7 @@ import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; @Injectable() export class BlocklistRepository { @@ -16,7 +16,7 @@ export class BlocklistRepository { id: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise | null> { + ): Promise | null> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -39,7 +39,7 @@ export class BlocklistRepository { workspaceMemberId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -56,7 +56,7 @@ export class BlocklistRepository { handle: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/connected-account/repositories/connected-account.repository.ts b/packages/twenty-server/src/modules/connected-account/repositories/connected-account.repository.ts index 836f84ba7a0..cb07db84f51 100644 --- a/packages/twenty-server/src/modules/connected-account/repositories/connected-account.repository.ts +++ b/packages/twenty-server/src/modules/connected-account/repositories/connected-account.repository.ts @@ -3,7 +3,7 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @Injectable() @@ -15,7 +15,7 @@ export class ConnectedAccountRepository { public async getAll( workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -31,7 +31,7 @@ export class ConnectedAccountRepository { connectedAccountIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -47,7 +47,7 @@ export class ConnectedAccountRepository { workspaceMemberId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[] | undefined> { + ): Promise[] | undefined> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -67,7 +67,7 @@ export class ConnectedAccountRepository { workspaceMemberId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[] | undefined> { + ): Promise[] | undefined> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -84,7 +84,7 @@ export class ConnectedAccountRepository { public async create( connectedAccount: Pick< - ObjectRecord, + ObjectRecord, | 'id' | 'handle' | 'provider' @@ -94,7 +94,7 @@ export class ConnectedAccountRepository { >, workspaceId: string, transactionManager?: EntityManager, - ): Promise> { + ): Promise> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -135,7 +135,7 @@ export class ConnectedAccountRepository { connectedAccountId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise | undefined> { + ): Promise | undefined> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -154,7 +154,7 @@ export class ConnectedAccountRepository { connectedAccountId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise> { + ): Promise> { const connectedAccount = await this.getById( connectedAccountId, workspaceId, diff --git a/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.module.ts b/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.module.ts index 156513f735a..a76112fd8fc 100644 --- a/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.module.ts +++ b/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.module.ts @@ -2,14 +2,14 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { BlocklistValidationService } from 'src/modules/connected-account/services/blocklist/blocklist-validation.service'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - BlocklistObjectMetadata, - WorkspaceMemberObjectMetadata, + BlocklistWorkspaceEntity, + WorkspaceMemberWorkspaceEntity, ]), ], providers: [BlocklistValidationService], diff --git a/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.service.ts b/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.service.ts index 54f301098fd..efa8d727997 100644 --- a/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.service.ts +++ b/packages/twenty-server/src/modules/connected-account/services/blocklist/blocklist-validation.service.ts @@ -10,12 +10,12 @@ import { import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { isDomain } from 'src/engine/utils/is-domain'; import { BlocklistRepository } from 'src/modules/connected-account/repositories/blocklist.repository'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; export type BlocklistItem = Omit< - BlocklistObjectMetadata, + BlocklistWorkspaceEntity, 'createdAt' | 'updatedAt' | 'workspaceMember' > & { createdAt: string; @@ -26,9 +26,9 @@ export type BlocklistItem = Omit< @Injectable() export class BlocklistValidationService { constructor( - @InjectObjectMetadataRepository(BlocklistObjectMetadata) + @InjectObjectMetadataRepository(BlocklistWorkspaceEntity) private readonly blocklistRepository: BlocklistRepository, - @InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata) + @InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity) private readonly workspaceMemberRepository: WorkspaceMemberRepository, ) {} diff --git a/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.module.ts b/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.module.ts index 29db89400d0..da04044d3f3 100644 --- a/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.module.ts +++ b/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.module.ts @@ -2,11 +2,13 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { GoogleAPIRefreshAccessTokenService } from 'src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.service'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; @Module({ imports: [ - ObjectMetadataRepositoryModule.forFeature([ConnectedAccountObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([ + ConnectedAccountWorkspaceEntity, + ]), ], providers: [GoogleAPIRefreshAccessTokenService], exports: [GoogleAPIRefreshAccessTokenService], diff --git a/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.service.ts b/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.service.ts index 72239c3d1f1..3297f0c6b7e 100644 --- a/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.service.ts +++ b/packages/twenty-server/src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.service.ts @@ -5,13 +5,13 @@ import axios from 'axios'; import { EnvironmentService } from 'src/engine/integrations/environment/environment.service'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; @Injectable() export class GoogleAPIRefreshAccessTokenService { constructor( private readonly environmentService: EnvironmentService, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, ) {} diff --git a/packages/twenty-server/src/modules/connected-account/standard-objects/blocklist.object-metadata.ts b/packages/twenty-server/src/modules/connected-account/standard-objects/blocklist.workspace-entity.ts similarity index 84% rename from packages/twenty-server/src/modules/connected-account/standard-objects/blocklist.object-metadata.ts rename to packages/twenty-server/src/modules/connected-account/standard-objects/blocklist.workspace-entity.ts index e532b278f2f..fce1a5eb201 100644 --- a/packages/twenty-server/src/modules/connected-account/standard-objects/blocklist.object-metadata.ts +++ b/packages/twenty-server/src/modules/connected-account/standard-objects/blocklist.workspace-entity.ts @@ -3,9 +3,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { BLOCKLIST_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -22,7 +22,7 @@ import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metad }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class BlocklistObjectMetadata extends BaseWorkspaceEntity { +export class BlocklistWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: BLOCKLIST_STANDARD_FIELD_IDS.handle, type: FieldMetadataType.TEXT, @@ -39,8 +39,8 @@ export class BlocklistObjectMetadata extends BaseWorkspaceEntity { description: 'WorkspaceMember', icon: 'IconCircleUser', joinColumn: 'workspaceMemberId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'blocklist', }) - workspaceMember: Relation; + workspaceMember: Relation; } diff --git a/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.object-metadata.ts b/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts similarity index 82% rename from packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.object-metadata.ts rename to packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts index e488b926181..ceef7b7a99b 100644 --- a/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.object-metadata.ts +++ b/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts @@ -7,11 +7,11 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { CONNECTED_ACCOUNT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { CalendarChannelObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-channel.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-channel.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -32,7 +32,7 @@ export enum ConnectedAccountProvider { }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class ConnectedAccountObjectMetadata extends BaseWorkspaceEntity { +export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.handle, type: FieldMetadataType.TEXT, @@ -95,10 +95,10 @@ export class ConnectedAccountObjectMetadata extends BaseWorkspaceEntity { description: 'Account Owner', icon: 'IconUserCircle', joinColumn: 'accountOwnerId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'connectedAccounts', }) - accountOwner: Relation; + accountOwner: Relation; @WorkspaceRelation({ standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.messageChannels, @@ -106,10 +106,10 @@ export class ConnectedAccountObjectMetadata extends BaseWorkspaceEntity { label: 'Message Channels', description: 'Message Channels', icon: 'IconMessage', - inverseSideTarget: () => MessageChannelObjectMetadata, + inverseSideTarget: () => MessageChannelWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) - messageChannels: Relation; + messageChannels: Relation; @WorkspaceRelation({ standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.calendarChannels, @@ -117,8 +117,8 @@ export class ConnectedAccountObjectMetadata extends BaseWorkspaceEntity { label: 'Calendar Channels', description: 'Calendar Channels', icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelObjectMetadata, + inverseSideTarget: () => CalendarChannelWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) - calendarChannels: Relation; + calendarChannels: Relation; } diff --git a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.object-metadata.ts b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts similarity index 79% rename from packages/twenty-server/src/modules/favorite/standard-objects/favorite.object-metadata.ts rename to packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts index 7b1d646ea46..6c1f81b6b3b 100644 --- a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.object-metadata.ts +++ b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts @@ -4,12 +4,12 @@ import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/fi import { FAVORITE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -28,7 +28,7 @@ import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/works }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class FavoriteObjectMetadata extends BaseWorkspaceEntity { +export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: FAVORITE_STANDARD_FIELD_IDS.position, type: FieldMetadataType.NUMBER, @@ -48,9 +48,9 @@ export class FavoriteObjectMetadata extends BaseWorkspaceEntity { icon: 'IconCircleUser', joinColumn: 'workspaceMemberId', inverseSideFieldKey: 'favorites', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, }) - workspaceMember: Relation; + workspaceMember: Relation; @WorkspaceRelation({ standardId: FAVORITE_STANDARD_FIELD_IDS.person, @@ -59,11 +59,11 @@ export class FavoriteObjectMetadata extends BaseWorkspaceEntity { description: 'Favorite person', icon: 'IconUser', joinColumn: 'personId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'favorites', }) @WorkspaceIsNullable() - person: Relation; + person: Relation; @WorkspaceRelation({ standardId: FAVORITE_STANDARD_FIELD_IDS.company, @@ -72,11 +72,11 @@ export class FavoriteObjectMetadata extends BaseWorkspaceEntity { description: 'Favorite company', icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'favorites', }) @WorkspaceIsNullable() - company: Relation; + company: Relation; @WorkspaceRelation({ standardId: FAVORITE_STANDARD_FIELD_IDS.opportunity, @@ -85,11 +85,11 @@ export class FavoriteObjectMetadata extends BaseWorkspaceEntity { description: 'Favorite opportunity', icon: 'IconTargetArrow', joinColumn: 'opportunityId', - inverseSideTarget: () => OpportunityObjectMetadata, + inverseSideTarget: () => OpportunityWorkspaceEntity, inverseSideFieldKey: 'favorites', }) @WorkspaceIsNullable() - opportunity: Relation; + opportunity: Relation; @WorkspaceDynamicRelation({ type: RelationMetadataType.MANY_TO_ONE, diff --git a/packages/twenty-server/src/modules/messaging/crons/commands/messaging-cron-commands.module.ts b/packages/twenty-server/src/modules/messaging/crons/commands/messaging-cron-commands.module.ts index 70a16bc9bad..eff0c5b4f99 100644 --- a/packages/twenty-server/src/modules/messaging/crons/commands/messaging-cron-commands.module.ts +++ b/packages/twenty-server/src/modules/messaging/crons/commands/messaging-cron-commands.module.ts @@ -1,12 +1,14 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { GmailFetchMessagesFromCacheCronCommand } from 'src/modules/messaging/crons/commands/gmail-fetch-messages-from-cache.cron.command'; import { GmailPartialSyncCronCommand } from 'src/modules/messaging/crons/commands/gmail-partial-sync.cron.command'; @Module({ imports: [ - ObjectMetadataRepositoryModule.forFeature([ConnectedAccountObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([ + ConnectedAccountWorkspaceEntity, + ]), ], providers: [ GmailPartialSyncCronCommand, diff --git a/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-fetch-messages-from-cache.cron.job.ts b/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-fetch-messages-from-cache.cron.job.ts index 549bbb26349..38eb5c83852 100644 --- a/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-fetch-messages-from-cache.cron.job.ts +++ b/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-fetch-messages-from-cache.cron.job.ts @@ -9,7 +9,7 @@ import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { GmailFetchMessageContentFromCacheService } from 'src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.service'; import { EnvironmentService } from 'src/engine/integrations/environment/environment.service'; @@ -22,7 +22,7 @@ export class GmailFetchMessagesFromCacheCronJob private readonly workspaceRepository: Repository, @InjectRepository(DataSourceEntity, 'metadata') private readonly dataSourceRepository: Repository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, private readonly gmailFetchMessageContentFromCacheService: GmailFetchMessageContentFromCacheService, private readonly environmentService: EnvironmentService, diff --git a/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-partial-sync.cron.job.ts b/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-partial-sync.cron.job.ts index d6fe90dc1cf..19ed32667cd 100644 --- a/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-partial-sync.cron.job.ts +++ b/packages/twenty-server/src/modules/messaging/crons/jobs/gmail-partial-sync.cron.job.ts @@ -15,7 +15,7 @@ import { MessageQueue } from 'src/engine/integrations/message-queue/message-queu import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { EnvironmentService } from 'src/engine/integrations/environment/environment.service'; @Injectable() @@ -29,7 +29,7 @@ export class GmailPartialSyncCronJob implements MessageQueueJob { private readonly dataSourceRepository: Repository, @Inject(MessageQueue.messagingQueue) private readonly messageQueueService: MessageQueueService, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, private readonly environmentService: EnvironmentService, ) {} diff --git a/packages/twenty-server/src/modules/messaging/crons/jobs/messaging-cron-job.module.ts b/packages/twenty-server/src/modules/messaging/crons/jobs/messaging-cron-job.module.ts index 1e749eafd4b..8d171c915f9 100644 --- a/packages/twenty-server/src/modules/messaging/crons/jobs/messaging-cron-job.module.ts +++ b/packages/twenty-server/src/modules/messaging/crons/jobs/messaging-cron-job.module.ts @@ -8,13 +8,13 @@ import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repos import { GmailFetchMessagesFromCacheCronJob } from 'src/modules/messaging/crons/jobs/gmail-fetch-messages-from-cache.cron.job'; import { GmailPartialSyncCronJob } from 'src/modules/messaging/crons/jobs/gmail-partial-sync.cron.job'; import { GmailFetchMessageContentFromCacheModule } from 'src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.module'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Module({ imports: [ TypeOrmModule.forFeature([Workspace, FeatureFlagEntity], 'core'), TypeOrmModule.forFeature([DataSourceEntity], 'metadata'), - ObjectMetadataRepositoryModule.forFeature([MessageChannelObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([MessageChannelWorkspaceEntity]), GmailFetchMessageContentFromCacheModule, ], providers: [ diff --git a/packages/twenty-server/src/modules/messaging/jobs/blocklist-item-delete-messages.job.ts b/packages/twenty-server/src/modules/messaging/jobs/blocklist-item-delete-messages.job.ts index 0e4cbf88c26..b046056938c 100644 --- a/packages/twenty-server/src/modules/messaging/jobs/blocklist-item-delete-messages.job.ts +++ b/packages/twenty-server/src/modules/messaging/jobs/blocklist-item-delete-messages.job.ts @@ -4,12 +4,12 @@ import { MessageQueueJob } from 'src/engine/integrations/message-queue/interface import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { BlocklistRepository } from 'src/modules/connected-account/repositories/blocklist.repository'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; import { MessageChannelMessageAssociationRepository } from 'src/modules/messaging/repositories/message-channel-message-association.repository'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { ThreadCleanerService } from 'src/modules/messaging/services/thread-cleaner/thread-cleaner.service'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; export type BlocklistItemDeleteMessagesJobData = { workspaceId: string; @@ -23,13 +23,13 @@ export class BlocklistItemDeleteMessagesJob private readonly logger = new Logger(BlocklistItemDeleteMessagesJob.name); constructor( - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, @InjectObjectMetadataRepository( - MessageChannelMessageAssociationObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, ) private readonly messageChannelMessageAssociationRepository: MessageChannelMessageAssociationRepository, - @InjectObjectMetadataRepository(BlocklistObjectMetadata) + @InjectObjectMetadataRepository(BlocklistWorkspaceEntity) private readonly blocklistRepository: BlocklistRepository, private readonly threadCleanerService: ThreadCleanerService, ) {} diff --git a/packages/twenty-server/src/modules/messaging/jobs/blocklist-reimport-messages.job.ts b/packages/twenty-server/src/modules/messaging/jobs/blocklist-reimport-messages.job.ts index 0dce7029cb3..62fdf9a4e8e 100644 --- a/packages/twenty-server/src/modules/messaging/jobs/blocklist-reimport-messages.job.ts +++ b/packages/twenty-server/src/modules/messaging/jobs/blocklist-reimport-messages.job.ts @@ -4,7 +4,7 @@ import { MessageQueueJob } from 'src/engine/integrations/message-queue/interface import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { GmailFullSyncService } from 'src/modules/messaging/services/gmail-full-sync/gmail-full-sync.service'; export type BlocklistReimportMessagesJobData = { @@ -20,7 +20,7 @@ export class BlocklistReimportMessagesJob private readonly logger = new Logger(BlocklistReimportMessagesJob.name); constructor( - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, private readonly gmailFullSyncService: GmailFullSyncService, ) {} diff --git a/packages/twenty-server/src/modules/messaging/jobs/messaging-create-company-and-contact-after-sync.job.ts b/packages/twenty-server/src/modules/messaging/jobs/messaging-create-company-and-contact-after-sync.job.ts index 876ae9766b3..27e3b5728f0 100644 --- a/packages/twenty-server/src/modules/messaging/jobs/messaging-create-company-and-contact-after-sync.job.ts +++ b/packages/twenty-server/src/modules/messaging/jobs/messaging-create-company-and-contact-after-sync.job.ts @@ -6,8 +6,8 @@ import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repos import { CreateCompanyAndContactService } from 'src/modules/connected-account/auto-companies-and-contacts-creation/services/create-company-and-contact.service'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { MessageParticipantRepository } from 'src/modules/messaging/repositories/message-participant.repository'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; export type MessagingCreateCompanyAndContactAfterSyncJobData = { workspaceId: string; @@ -23,9 +23,9 @@ export class MessagingCreateCompanyAndContactAfterSyncJob ); constructor( private readonly createCompanyAndContactService: CreateCompanyAndContactService, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelService: MessageChannelRepository, - @InjectObjectMetadataRepository(MessageParticipantObjectMetadata) + @InjectObjectMetadataRepository(MessageParticipantWorkspaceEntity) private readonly messageParticipantRepository: MessageParticipantRepository, ) {} diff --git a/packages/twenty-server/src/modules/messaging/jobs/messaging-job.module.ts b/packages/twenty-server/src/modules/messaging/jobs/messaging-job.module.ts index 6b07da3ad34..41e613f26ac 100644 --- a/packages/twenty-server/src/modules/messaging/jobs/messaging-job.module.ts +++ b/packages/twenty-server/src/modules/messaging/jobs/messaging-job.module.ts @@ -3,8 +3,8 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { AutoCompaniesAndContactsCreationModule } from 'src/modules/connected-account/auto-companies-and-contacts-creation/auto-companies-and-contacts-creation.module'; import { GoogleAPIRefreshAccessTokenModule } from 'src/modules/connected-account/services/google-api-refresh-access-token/google-api-refresh-access-token.module'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { BlocklistItemDeleteMessagesJob } from 'src/modules/messaging/jobs/blocklist-item-delete-messages.job'; import { BlocklistReimportMessagesJob } from 'src/modules/messaging/jobs/blocklist-reimport-messages.job'; import { DeleteConnectedAccountAssociatedMessagingDataJob } from 'src/modules/messaging/jobs/delete-connected-account-associated-messaging-data.job'; @@ -14,18 +14,18 @@ import { MessagingCreateCompanyAndContactAfterSyncJob } from 'src/modules/messag import { GmailFullSyncModule } from 'src/modules/messaging/services/gmail-full-sync/gmail-full-sync.module'; import { GmailPartialSyncModule } from 'src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.module'; import { ThreadCleanerModule } from 'src/modules/messaging/services/thread-cleaner/thread-cleaner.module'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - MessageChannelObjectMetadata, - MessageParticipantObjectMetadata, - MessageChannelMessageAssociationObjectMetadata, - BlocklistObjectMetadata, + ConnectedAccountWorkspaceEntity, + MessageChannelWorkspaceEntity, + MessageParticipantWorkspaceEntity, + MessageChannelMessageAssociationWorkspaceEntity, + BlocklistWorkspaceEntity, ]), GmailFullSyncModule, GmailPartialSyncModule, diff --git a/packages/twenty-server/src/modules/messaging/listeners/messaging-blocklist.listener.ts b/packages/twenty-server/src/modules/messaging/listeners/messaging-blocklist.listener.ts index 03cd5e7c8b3..f612cdc3e1f 100644 --- a/packages/twenty-server/src/modules/messaging/listeners/messaging-blocklist.listener.ts +++ b/packages/twenty-server/src/modules/messaging/listeners/messaging-blocklist.listener.ts @@ -5,7 +5,7 @@ import { ObjectRecordCreateEvent } from 'src/engine/integrations/event-emitter/t import { ObjectRecordDeleteEvent } from 'src/engine/integrations/event-emitter/types/object-record-delete.event'; import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/integrations/message-queue/services/message-queue.service'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; import { BlocklistReimportMessagesJob, BlocklistReimportMessagesJobData, @@ -25,7 +25,7 @@ export class MessagingBlocklistListener { @OnEvent('blocklist.created') async handleCreatedEvent( - payload: ObjectRecordCreateEvent, + payload: ObjectRecordCreateEvent, ) { await this.messageQueueService.add( BlocklistItemDeleteMessagesJob.name, @@ -38,7 +38,7 @@ export class MessagingBlocklistListener { @OnEvent('blocklist.deleted') async handleDeletedEvent( - payload: ObjectRecordDeleteEvent, + payload: ObjectRecordDeleteEvent, ) { await this.messageQueueService.add( BlocklistReimportMessagesJob.name, @@ -52,7 +52,7 @@ export class MessagingBlocklistListener { @OnEvent('blocklist.updated') async handleUpdatedEvent( - payload: ObjectRecordUpdateEvent, + payload: ObjectRecordUpdateEvent, ) { await this.messageQueueService.add( BlocklistItemDeleteMessagesJob.name, diff --git a/packages/twenty-server/src/modules/messaging/listeners/messaging-connected-account.listener.ts b/packages/twenty-server/src/modules/messaging/listeners/messaging-connected-account.listener.ts index ef149359c33..6036d3cf765 100644 --- a/packages/twenty-server/src/modules/messaging/listeners/messaging-connected-account.listener.ts +++ b/packages/twenty-server/src/modules/messaging/listeners/messaging-connected-account.listener.ts @@ -15,7 +15,7 @@ import { DeleteConnectedAccountAssociatedMessagingDataJobData, DeleteConnectedAccountAssociatedMessagingDataJob, } from 'src/modules/messaging/jobs/delete-connected-account-associated-messaging-data.job'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; @Injectable() @@ -31,7 +31,7 @@ export class MessagingConnectedAccountListener { @OnEvent('connectedAccount.deleted') async handleDeletedEvent( - payload: ObjectRecordDeleteEvent, + payload: ObjectRecordDeleteEvent, ) { await this.messageQueueService.add( DeleteConnectedAccountAssociatedMessagingDataJob.name, diff --git a/packages/twenty-server/src/modules/messaging/listeners/messaging-message-channel.listener.ts b/packages/twenty-server/src/modules/messaging/listeners/messaging-message-channel.listener.ts index 8c53167bb35..6f646f26801 100644 --- a/packages/twenty-server/src/modules/messaging/listeners/messaging-message-channel.listener.ts +++ b/packages/twenty-server/src/modules/messaging/listeners/messaging-message-channel.listener.ts @@ -9,7 +9,7 @@ import { MessagingCreateCompanyAndContactAfterSyncJobData, MessagingCreateCompanyAndContactAfterSyncJob, } from 'src/modules/messaging/jobs/messaging-create-company-and-contact-after-sync.job'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Injectable() export class MessagingMessageChannelListener { @@ -20,7 +20,7 @@ export class MessagingMessageChannelListener { @OnEvent('messageChannel.updated') async handleUpdatedEvent( - payload: ObjectRecordUpdateEvent, + payload: ObjectRecordUpdateEvent, ) { if ( objectRecordChangedProperties( diff --git a/packages/twenty-server/src/modules/messaging/query-hooks/message/message-find-many.pre-query.hook.ts b/packages/twenty-server/src/modules/messaging/query-hooks/message/message-find-many.pre-query.hook.ts index fbd837f23fd..bb83bda454f 100644 --- a/packages/twenty-server/src/modules/messaging/query-hooks/message/message-find-many.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/messaging/query-hooks/message/message-find-many.pre-query.hook.ts @@ -15,23 +15,23 @@ import { MessageChannelRepository } from 'src/modules/messaging/repositories/mes import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Injectable() export class MessageFindManyPreQueryHook implements WorkspacePreQueryHook { constructor( @InjectObjectMetadataRepository( - MessageChannelMessageAssociationObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, ) private readonly messageChannelMessageAssociationService: MessageChannelMessageAssociationRepository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelService: MessageChannelRepository, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata) + @InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity) private readonly workspaceMemberRepository: WorkspaceMemberRepository, ) {} diff --git a/packages/twenty-server/src/modules/messaging/query-hooks/messaging-query-hook.module.ts b/packages/twenty-server/src/modules/messaging/query-hooks/messaging-query-hook.module.ts index 2570a7f2bc6..7dfabdeb1c1 100644 --- a/packages/twenty-server/src/modules/messaging/query-hooks/messaging-query-hook.module.ts +++ b/packages/twenty-server/src/modules/messaging/query-hooks/messaging-query-hook.module.ts @@ -3,18 +3,18 @@ import { Module } from '@nestjs/common'; import { MessageFindManyPreQueryHook } from 'src/modules/messaging/query-hooks/message/message-find-many.pre-query.hook'; import { MessageFindOnePreQueryHook } from 'src/modules/messaging/query-hooks/message/message-find-one.pre-query-hook'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - MessageChannelMessageAssociationObjectMetadata, - MessageChannelObjectMetadata, - ConnectedAccountObjectMetadata, - WorkspaceMemberObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, + MessageChannelWorkspaceEntity, + ConnectedAccountWorkspaceEntity, + WorkspaceMemberWorkspaceEntity, ]), ], providers: [ diff --git a/packages/twenty-server/src/modules/messaging/repositories/message-channel-message-association.repository.ts b/packages/twenty-server/src/modules/messaging/repositories/message-channel-message-association.repository.ts index 08e8d490c44..35feb096893 100644 --- a/packages/twenty-server/src/modules/messaging/repositories/message-channel-message-association.repository.ts +++ b/packages/twenty-server/src/modules/messaging/repositories/message-channel-message-association.repository.ts @@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common'; import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @Injectable() @@ -17,7 +17,7 @@ export class MessageChannelMessageAssociationRepository { messageChannelId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -116,7 +116,7 @@ export class MessageChannelMessageAssociationRepository { messageChannelIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -169,7 +169,7 @@ export class MessageChannelMessageAssociationRepository { messageThreadExternalIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -186,7 +186,7 @@ export class MessageChannelMessageAssociationRepository { messageThreadExternalId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise | null> { + ): Promise | null> { const existingMessageChannelMessageAssociations = await this.getByMessageThreadExternalIds( [messageThreadExternalId], @@ -208,7 +208,7 @@ export class MessageChannelMessageAssociationRepository { messageIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -225,7 +225,7 @@ export class MessageChannelMessageAssociationRepository { messageThreadId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/messaging/repositories/message-channel.repository.ts b/packages/twenty-server/src/modules/messaging/repositories/message-channel.repository.ts index cfa11172074..4bc249f4a70 100644 --- a/packages/twenty-server/src/modules/messaging/repositories/message-channel.repository.ts +++ b/packages/twenty-server/src/modules/messaging/repositories/message-channel.repository.ts @@ -4,9 +4,9 @@ import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { - MessageChannelObjectMetadata, + MessageChannelWorkspaceEntity, MessageChannelSyncStatus, -} from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +} from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @Injectable() @@ -17,7 +17,7 @@ export class MessageChannelRepository { public async create( messageChannel: Pick< - ObjectRecord, + ObjectRecord, 'id' | 'connectedAccountId' | 'type' | 'handle' | 'visibility' >, workspaceId: string, @@ -61,7 +61,7 @@ export class MessageChannelRepository { public async getAll( workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -77,7 +77,7 @@ export class MessageChannelRepository { connectedAccountId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -92,7 +92,7 @@ export class MessageChannelRepository { public async getFirstByConnectedAccountIdOrFail( connectedAccountId: string, workspaceId: string, - ): Promise> { + ): Promise> { const messageChannel = await this.getFirstByConnectedAccountId( connectedAccountId, workspaceId, @@ -111,7 +111,7 @@ export class MessageChannelRepository { connectedAccountId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise | undefined> { + ): Promise | undefined> { const messageChannels = await this.getByConnectedAccountId( connectedAccountId, workspaceId, @@ -125,7 +125,7 @@ export class MessageChannelRepository { ids: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -141,7 +141,7 @@ export class MessageChannelRepository { workspaceMemberId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/messaging/repositories/message-participant.repository.ts b/packages/twenty-server/src/modules/messaging/repositories/message-participant.repository.ts index d8c45f07ba0..63a3e90f5c9 100644 --- a/packages/twenty-server/src/modules/messaging/repositories/message-participant.repository.ts +++ b/packages/twenty-server/src/modules/messaging/repositories/message-participant.repository.ts @@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common'; import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; import { ParticipantWithId } from 'src/modules/messaging/types/gmail-message'; @@ -17,7 +17,7 @@ export class MessageParticipantRepository { handles: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/messaging/repositories/message.repository.ts b/packages/twenty-server/src/modules/messaging/repositories/message.repository.ts index b884f4458ee..01e088ee741 100644 --- a/packages/twenty-server/src/modules/messaging/repositories/message.repository.ts +++ b/packages/twenty-server/src/modules/messaging/repositories/message.repository.ts @@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common'; import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @Injectable() @@ -40,7 +40,7 @@ export class MessageRepository { headerMessageId: string, workspaceId: string, transactionManager?: EntityManager, - ): Promise | null> { + ): Promise | null> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -62,7 +62,7 @@ export class MessageRepository { messageIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -94,7 +94,7 @@ export class MessageRepository { messageThreadIds: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.module.ts b/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.module.ts index eabedddf938..a287550a9da 100644 --- a/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.module.ts @@ -2,19 +2,19 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { FetchMessagesByBatchesModule } from 'src/modules/messaging/services/fetch-messages-by-batches/fetch-messages-by-batches.module'; import { GmailFetchMessageContentFromCacheService } from 'src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.service'; import { MessageParticipantModule } from 'src/modules/messaging/services/message-participant/message-participant.module'; import { MessageModule } from 'src/modules/messaging/services/message/message.module'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Module({ imports: [ FetchMessagesByBatchesModule, ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - MessageChannelObjectMetadata, + ConnectedAccountWorkspaceEntity, + MessageChannelWorkspaceEntity, ]), MessageModule, WorkspaceDataSourceModule, diff --git a/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.service.ts b/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.service.ts index 35556a7d109..053b5e0863e 100644 --- a/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/gmail-fetch-message-content-from-cache/gmail-fetch-message-content-from-cache.service.ts @@ -4,13 +4,13 @@ import { EntityManager } from 'typeorm'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { FetchMessagesByBatchesService } from 'src/modules/messaging/services/fetch-messages-by-batches/fetch-messages-by-batches.service'; import { - MessageChannelObjectMetadata, + MessageChannelWorkspaceEntity, MessageChannelSyncStatus, -} from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +} from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { createQueriesFromMessageIds } from 'src/modules/messaging/utils/create-queries-from-message-ids.util'; import { InjectCacheStorage } from 'src/engine/integrations/cache-storage/decorators/cache-storage.decorator'; import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/types/cache-storage-namespace.enum'; @@ -40,9 +40,9 @@ export class GmailFetchMessageContentFromCacheService { constructor( private readonly fetchMessagesByBatchesService: FetchMessagesByBatchesService, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, @InjectCacheStorage(CacheStorageNamespace.Messaging) private readonly cacheStorage: CacheStorageService, diff --git a/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.module.ts b/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.module.ts index 0ed81b98c62..75c2de0b35b 100644 --- a/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.module.ts @@ -4,23 +4,23 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { FetchMessagesByBatchesModule } from 'src/modules/messaging/services/fetch-messages-by-batches/fetch-messages-by-batches.module'; import { GmailFullSyncService } from 'src/modules/messaging/services/gmail-full-sync/gmail-full-sync.service'; import { MessagingProvidersModule } from 'src/modules/messaging/services/providers/messaging-providers.module'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Module({ imports: [ MessagingProvidersModule, FetchMessagesByBatchesModule, ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - MessageChannelObjectMetadata, - MessageChannelMessageAssociationObjectMetadata, - BlocklistObjectMetadata, + ConnectedAccountWorkspaceEntity, + MessageChannelWorkspaceEntity, + MessageChannelMessageAssociationWorkspaceEntity, + BlocklistWorkspaceEntity, ]), TypeOrmModule.forFeature([FeatureFlagEntity], 'core'), WorkspaceDataSourceModule, diff --git a/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.service.ts b/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.service.ts index 25e13042816..043c1a3c824 100644 --- a/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/gmail-full-sync/gmail-full-sync.service.ts @@ -14,17 +14,17 @@ import { CacheStorageNamespace } from 'src/engine/integrations/cache-storage/typ import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { BlocklistRepository } from 'src/modules/connected-account/repositories/blocklist.repository'; import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { GMAIL_USERS_MESSAGES_LIST_MAX_RESULT } from 'src/modules/messaging/constants/gmail-users-messages-list-max-result.constant'; import { MessageChannelMessageAssociationRepository } from 'src/modules/messaging/repositories/message-channel-message-association.repository'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { GmailClientProvider } from 'src/modules/messaging/services/providers/gmail/gmail-client.provider'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; import { - MessageChannelObjectMetadata, + MessageChannelWorkspaceEntity, MessageChannelSyncStatus, -} from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +} from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { gmailSearchFilterEmailAdresses } from 'src/modules/messaging/utils/gmail-search-filter.util'; @@ -34,18 +34,18 @@ export class GmailFullSyncService { constructor( private readonly gmailClientProvider: GmailClientProvider, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, - @InjectObjectMetadataRepository(BlocklistObjectMetadata) + @InjectObjectMetadataRepository(BlocklistWorkspaceEntity) private readonly blocklistRepository: BlocklistRepository, @InjectRepository(FeatureFlagEntity, 'core') private readonly featureFlagRepository: Repository, @InjectCacheStorage(CacheStorageNamespace.Messaging) private readonly cacheStorage: CacheStorageService, @InjectObjectMetadataRepository( - MessageChannelMessageAssociationObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, ) private readonly messageChannelMessageAssociationRepository: MessageChannelMessageAssociationRepository, private readonly workspaceDataSourceService: WorkspaceDataSourceService, diff --git a/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.module.ts b/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.module.ts index cac4cdd6c8d..dd7663e17d9 100644 --- a/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.module.ts @@ -4,22 +4,22 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { FetchMessagesByBatchesModule } from 'src/modules/messaging/services/fetch-messages-by-batches/fetch-messages-by-batches.module'; import { GmailPartialSyncV2Service as GmailPartialSyncService } from 'src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.service'; import { MessageModule } from 'src/modules/messaging/services/message/message.module'; import { MessagingProvidersModule } from 'src/modules/messaging/services/providers/messaging-providers.module'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; @Module({ imports: [ MessagingProvidersModule, FetchMessagesByBatchesModule, ObjectMetadataRepositoryModule.forFeature([ - ConnectedAccountObjectMetadata, - MessageChannelObjectMetadata, - BlocklistObjectMetadata, + ConnectedAccountWorkspaceEntity, + MessageChannelWorkspaceEntity, + BlocklistWorkspaceEntity, ]), MessageModule, TypeOrmModule.forFeature([FeatureFlagEntity], 'core'), diff --git a/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.service.ts b/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.service.ts index 5d8db0f9936..4631b384c00 100644 --- a/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/gmail-partial-sync/gmail-partial-sync.service.ts @@ -9,11 +9,11 @@ import { MessageQueue } from 'src/engine/integrations/message-queue/message-queu import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { - MessageChannelObjectMetadata, + MessageChannelWorkspaceEntity, MessageChannelSyncStatus, -} from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +} from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { GMAIL_USERS_HISTORY_MAX_RESULT } from 'src/modules/messaging/constants/gmail-users-history-max-result.constant'; import { GmailError } from 'src/modules/messaging/types/gmail-error'; import { CacheStorageService } from 'src/engine/integrations/cache-storage/cache-storage.service'; @@ -24,7 +24,7 @@ import { GmailFullSyncJob, GmailFullSyncJobData, } from 'src/modules/messaging/jobs/gmail-full-sync.job'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; import { MessageChannelMessageAssociationRepository } from 'src/modules/messaging/repositories/message-channel-message-association.repository'; @Injectable() @@ -35,15 +35,15 @@ export class GmailPartialSyncV2Service { private readonly gmailClientProvider: GmailClientProvider, @Inject(MessageQueue.messagingQueue) private readonly messageQueueService: MessageQueueService, - @InjectObjectMetadataRepository(ConnectedAccountObjectMetadata) + @InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity) private readonly connectedAccountRepository: ConnectedAccountRepository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, @InjectCacheStorage(CacheStorageNamespace.Messaging) private readonly cacheStorage: CacheStorageService, private readonly workspaceDataSourceService: WorkspaceDataSourceService, @InjectObjectMetadataRepository( - MessageChannelMessageAssociationObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, ) private readonly messageChannelMessageAssociationRepository: MessageChannelMessageAssociationRepository, ) {} diff --git a/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.module.ts b/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.module.ts index 3735240a867..907ae76ec16 100644 --- a/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.module.ts @@ -4,15 +4,15 @@ import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repos import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { AddPersonIdAndWorkspaceMemberIdModule } from 'src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.module'; import { MessageParticipantService } from 'src/modules/messaging/services/message-participant/message-participant.service'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; @Module({ imports: [ WorkspaceDataSourceModule, ObjectMetadataRepositoryModule.forFeature([ - PersonObjectMetadata, - MessageParticipantObjectMetadata, + PersonWorkspaceEntity, + MessageParticipantWorkspaceEntity, ]), AddPersonIdAndWorkspaceMemberIdModule, ], diff --git a/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.service.ts b/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.service.ts index ed446bb361d..9d23d7e09be 100644 --- a/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/message-participant/message-participant.service.ts @@ -5,11 +5,11 @@ import { EntityManager } from 'typeorm'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { ParticipantWithMessageId } from 'src/modules/messaging/types/gmail-message'; import { PersonRepository } from 'src/modules/person/repositories/person.repository'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { getFlattenedValuesAndValuesStringForBatchRawQuery } from 'src/modules/calendar/utils/get-flattened-values-and-values-string-for-batch-raw-query.util'; import { MessageParticipantRepository } from 'src/modules/messaging/repositories/message-participant.repository'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; import { AddPersonIdAndWorkspaceMemberIdService } from 'src/modules/calendar-messaging-participant/services/add-person-id-and-workspace-member-id/add-person-id-and-workspace-member-id.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @@ -17,15 +17,15 @@ import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metada export class MessageParticipantService { constructor( private readonly workspaceDataSourceService: WorkspaceDataSourceService, - @InjectObjectMetadataRepository(MessageParticipantObjectMetadata) + @InjectObjectMetadataRepository(MessageParticipantWorkspaceEntity) private readonly messageParticipantRepository: MessageParticipantRepository, - @InjectObjectMetadataRepository(PersonObjectMetadata) + @InjectObjectMetadataRepository(PersonWorkspaceEntity) private readonly personRepository: PersonRepository, private readonly addPersonIdAndWorkspaceMemberIdService: AddPersonIdAndWorkspaceMemberIdService, ) {} public async updateMessageParticipantsAfterPeopleCreation( - createdPeople: ObjectRecord[], + createdPeople: ObjectRecord[], workspaceId: string, transactionManager?: EntityManager, ): Promise { diff --git a/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.module.ts b/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.module.ts index c06f474db6b..eb7cbd74896 100644 --- a/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.module.ts @@ -2,16 +2,16 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { MessageThreadService } from 'src/modules/messaging/services/message-thread/message-thread.service'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - MessageChannelMessageAssociationObjectMetadata, - MessageObjectMetadata, - MessageThreadObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, + MessageWorkspaceEntity, + MessageThreadWorkspaceEntity, ]), ], providers: [MessageThreadService], diff --git a/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.service.ts b/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.service.ts index 01fa411a3f9..4076dbdc602 100644 --- a/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/message-thread/message-thread.service.ts @@ -6,21 +6,21 @@ import { v4 } from 'uuid'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { MessageChannelMessageAssociationRepository } from 'src/modules/messaging/repositories/message-channel-message-association.repository'; import { MessageRepository } from 'src/modules/messaging/repositories/message.repository'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; import { MessageThreadRepository } from 'src/modules/messaging/repositories/message-thread.repository'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; @Injectable() export class MessageThreadService { constructor( @InjectObjectMetadataRepository( - MessageChannelMessageAssociationObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, ) private readonly messageChannelMessageAssociationRepository: MessageChannelMessageAssociationRepository, - @InjectObjectMetadataRepository(MessageObjectMetadata) + @InjectObjectMetadataRepository(MessageWorkspaceEntity) private readonly messageRepository: MessageRepository, - @InjectObjectMetadataRepository(MessageThreadObjectMetadata) + @InjectObjectMetadataRepository(MessageThreadWorkspaceEntity) private readonly messageThreadRepository: MessageThreadRepository, ) {} diff --git a/packages/twenty-server/src/modules/messaging/services/message/message.module.ts b/packages/twenty-server/src/modules/messaging/services/message/message.module.ts index 9a2bb8abd7e..8bfa2b6d588 100644 --- a/packages/twenty-server/src/modules/messaging/services/message/message.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/message/message.module.ts @@ -4,19 +4,19 @@ import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repos import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { MessageThreadModule } from 'src/modules/messaging/services/message-thread/message-thread.module'; import { MessageService } from 'src/modules/messaging/services/message/message.service'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; @Module({ imports: [ WorkspaceDataSourceModule, ObjectMetadataRepositoryModule.forFeature([ - MessageChannelMessageAssociationObjectMetadata, - MessageObjectMetadata, - MessageChannelObjectMetadata, - MessageThreadObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, + MessageWorkspaceEntity, + MessageChannelWorkspaceEntity, + MessageThreadWorkspaceEntity, ]), MessageThreadModule, ], diff --git a/packages/twenty-server/src/modules/messaging/services/message/message.service.ts b/packages/twenty-server/src/modules/messaging/services/message/message.service.ts index f3cc41c9f19..219390b879d 100644 --- a/packages/twenty-server/src/modules/messaging/services/message/message.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/message/message.service.ts @@ -4,18 +4,18 @@ import { DataSource, EntityManager } from 'typeorm'; import { v4 } from 'uuid'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; import { GmailMessage } from 'src/modules/messaging/types/gmail-message'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { MessageChannelMessageAssociationRepository } from 'src/modules/messaging/repositories/message-channel-message-association.repository'; import { MessageRepository } from 'src/modules/messaging/repositories/message.repository'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; import { MessageChannelRepository } from 'src/modules/messaging/repositories/message-channel.repository'; import { MessageThreadService } from 'src/modules/messaging/services/message-thread/message-thread.service'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; import { MessageThreadRepository } from 'src/modules/messaging/repositories/message-thread.repository'; @Injectable() @@ -25,21 +25,21 @@ export class MessageService { constructor( private readonly workspaceDataSourceService: WorkspaceDataSourceService, @InjectObjectMetadataRepository( - MessageChannelMessageAssociationObjectMetadata, + MessageChannelMessageAssociationWorkspaceEntity, ) private readonly messageChannelMessageAssociationRepository: MessageChannelMessageAssociationRepository, - @InjectObjectMetadataRepository(MessageObjectMetadata) + @InjectObjectMetadataRepository(MessageWorkspaceEntity) private readonly messageRepository: MessageRepository, - @InjectObjectMetadataRepository(MessageChannelObjectMetadata) + @InjectObjectMetadataRepository(MessageChannelWorkspaceEntity) private readonly messageChannelRepository: MessageChannelRepository, - @InjectObjectMetadataRepository(MessageThreadObjectMetadata) + @InjectObjectMetadataRepository(MessageThreadWorkspaceEntity) private readonly messageThreadRepository: MessageThreadRepository, private readonly messageThreadService: MessageThreadService, ) {} public async saveMessagesWithinTransaction( messages: GmailMessage[], - connectedAccount: ObjectRecord, + connectedAccount: ObjectRecord, gmailMessageChannelId: string, workspaceId: string, transactionManager: EntityManager, @@ -99,7 +99,7 @@ export class MessageService { public async saveMessages( messages: GmailMessage[], workspaceDataSource: DataSource, - connectedAccount: ObjectRecord, + connectedAccount: ObjectRecord, gmailMessageChannelId: string, workspaceId: string, ): Promise> { @@ -191,7 +191,7 @@ export class MessageService { private async saveMessageOrReturnExistingMessage( message: GmailMessage, messageThreadId: string, - connectedAccount: ObjectRecord, + connectedAccount: ObjectRecord, workspaceId: string, manager: EntityManager, ): Promise { diff --git a/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.module.ts b/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.module.ts index 33b43ab4360..6305b55a3a4 100644 --- a/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.module.ts +++ b/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.module.ts @@ -2,14 +2,14 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { ThreadCleanerService } from 'src/modules/messaging/services/thread-cleaner/thread-cleaner.service'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - MessageObjectMetadata, - MessageThreadObjectMetadata, + MessageWorkspaceEntity, + MessageThreadWorkspaceEntity, ]), ], providers: [ThreadCleanerService], diff --git a/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.service.ts b/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.service.ts index f370674dc76..40ddf77bae9 100644 --- a/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.service.ts +++ b/packages/twenty-server/src/modules/messaging/services/thread-cleaner/thread-cleaner.service.ts @@ -4,15 +4,15 @@ import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repos import { MessageThreadRepository } from 'src/modules/messaging/repositories/message-thread.repository'; import { MessageRepository } from 'src/modules/messaging/repositories/message.repository'; import { deleteUsingPagination } from 'src/modules/messaging/services/thread-cleaner/utils/delete-using-pagination.util'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; @Injectable() export class ThreadCleanerService { constructor( - @InjectObjectMetadataRepository(MessageObjectMetadata) + @InjectObjectMetadataRepository(MessageWorkspaceEntity) private readonly messageRepository: MessageRepository, - @InjectObjectMetadataRepository(MessageThreadObjectMetadata) + @InjectObjectMetadataRepository(MessageThreadWorkspaceEntity) private readonly messageThreadRepository: MessageThreadRepository, ) {} diff --git a/packages/twenty-server/src/modules/messaging/standard-objects/message-channel-message-association.object-metadata.ts b/packages/twenty-server/src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity.ts similarity index 81% rename from packages/twenty-server/src/modules/messaging/standard-objects/message-channel-message-association.object-metadata.ts rename to packages/twenty-server/src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity.ts index d3ee0151818..55ac9bb4465 100644 --- a/packages/twenty-server/src/modules/messaging/standard-objects/message-channel-message-association.object-metadata.ts +++ b/packages/twenty-server/src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity.ts @@ -3,11 +3,11 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { MessageChannelObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel.object-metadata'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel.workspace-entity'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -25,7 +25,7 @@ import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metad }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class MessageChannelMessageAssociationObjectMetadata extends BaseWorkspaceEntity { +export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS.messageExternalId, @@ -56,11 +56,11 @@ export class MessageChannelMessageAssociationObjectMetadata extends BaseWorkspac description: 'Message Channel Id', icon: 'IconHash', joinColumn: 'messageChannelId', - inverseSideTarget: () => MessageChannelObjectMetadata, + inverseSideTarget: () => MessageChannelWorkspaceEntity, inverseSideFieldKey: 'messageChannelMessageAssociations', }) @WorkspaceIsNullable() - messageChannel: Relation; + messageChannel: Relation; @WorkspaceRelation({ standardId: MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS.message, @@ -69,11 +69,11 @@ export class MessageChannelMessageAssociationObjectMetadata extends BaseWorkspac description: 'Message Id', icon: 'IconHash', joinColumn: 'messageId', - inverseSideTarget: () => MessageObjectMetadata, + inverseSideTarget: () => MessageWorkspaceEntity, inverseSideFieldKey: 'messageChannelMessageAssociations', }) @WorkspaceIsNullable() - message: Relation; + message: Relation; @WorkspaceRelation({ standardId: @@ -83,9 +83,9 @@ export class MessageChannelMessageAssociationObjectMetadata extends BaseWorkspac description: 'Message Thread Id', icon: 'IconHash', joinColumn: 'messageThreadId', - inverseSideTarget: () => MessageThreadObjectMetadata, + inverseSideTarget: () => MessageThreadWorkspaceEntity, inverseSideFieldKey: 'messageChannelMessageAssociations', }) @WorkspaceIsNullable() - messageThread: Relation; + messageThread: Relation; } diff --git a/packages/twenty-server/src/modules/messaging/standard-objects/message-channel.object-metadata.ts b/packages/twenty-server/src/modules/messaging/standard-objects/message-channel.workspace-entity.ts similarity index 90% rename from packages/twenty-server/src/modules/messaging/standard-objects/message-channel.object-metadata.ts rename to packages/twenty-server/src/modules/messaging/standard-objects/message-channel.workspace-entity.ts index 487acf0739f..c06c2be04aa 100644 --- a/packages/twenty-server/src/modules/messaging/standard-objects/message-channel.object-metadata.ts +++ b/packages/twenty-server/src/modules/messaging/standard-objects/message-channel.workspace-entity.ts @@ -7,10 +7,10 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { MESSAGE_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -45,7 +45,7 @@ export enum MessageChannelType { }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class MessageChannelObjectMetadata extends BaseWorkspaceEntity { +export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.visibility, type: FieldMetadataType.SELECT, @@ -201,10 +201,10 @@ export class MessageChannelObjectMetadata extends BaseWorkspaceEntity { description: 'Connected Account', icon: 'IconUserCircle', joinColumn: 'connectedAccountId', - inverseSideTarget: () => ConnectedAccountObjectMetadata, + inverseSideTarget: () => ConnectedAccountWorkspaceEntity, inverseSideFieldKey: 'messageChannels', }) - connectedAccount: Relation; + connectedAccount: Relation; @WorkspaceRelation({ standardId: @@ -213,11 +213,11 @@ export class MessageChannelObjectMetadata extends BaseWorkspaceEntity { label: 'Message Channel Association', description: 'Messages from the channel.', icon: 'IconMessage', - inverseSideTarget: () => MessageChannelMessageAssociationObjectMetadata, + inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() messageChannelMessageAssociations: Relation< - MessageChannelMessageAssociationObjectMetadata[] + MessageChannelMessageAssociationWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/messaging/standard-objects/message-participant.object-metadata.ts b/packages/twenty-server/src/modules/messaging/standard-objects/message-participant.workspace-entity.ts similarity index 82% rename from packages/twenty-server/src/modules/messaging/standard-objects/message-participant.object-metadata.ts rename to packages/twenty-server/src/modules/messaging/standard-objects/message-participant.workspace-entity.ts index 3acca760adc..7b8264a34f2 100644 --- a/packages/twenty-server/src/modules/messaging/standard-objects/message-participant.object-metadata.ts +++ b/packages/twenty-server/src/modules/messaging/standard-objects/message-participant.workspace-entity.ts @@ -3,11 +3,11 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -25,7 +25,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace- }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class MessageParticipantObjectMetadata extends BaseWorkspaceEntity { +export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.role, type: FieldMetadataType.SELECT, @@ -67,10 +67,10 @@ export class MessageParticipantObjectMetadata extends BaseWorkspaceEntity { description: 'Message', icon: 'IconMessage', joinColumn: 'messageId', - inverseSideTarget: () => MessageObjectMetadata, + inverseSideTarget: () => MessageWorkspaceEntity, inverseSideFieldKey: 'messageParticipants', }) - message: Relation; + message: Relation; @WorkspaceRelation({ standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.person, @@ -79,11 +79,11 @@ export class MessageParticipantObjectMetadata extends BaseWorkspaceEntity { description: 'Person', icon: 'IconUser', joinColumn: 'personId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'messageParticipants', }) @WorkspaceIsNullable() - person: Relation; + person: Relation; @WorkspaceRelation({ standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.workspaceMember, @@ -92,9 +92,9 @@ export class MessageParticipantObjectMetadata extends BaseWorkspaceEntity { description: 'Workspace member', icon: 'IconCircleUser', joinColumn: 'workspaceMemberId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'messageParticipants', }) @WorkspaceIsNullable() - workspaceMember: Relation; + workspaceMember: Relation; } diff --git a/packages/twenty-server/src/modules/messaging/standard-objects/message-thread.object-metadata.ts b/packages/twenty-server/src/modules/messaging/standard-objects/message-thread.workspace-entity.ts similarity index 77% rename from packages/twenty-server/src/modules/messaging/standard-objects/message-thread.object-metadata.ts rename to packages/twenty-server/src/modules/messaging/standard-objects/message-thread.workspace-entity.ts index 957251bfc01..ff38d03d4a2 100644 --- a/packages/twenty-server/src/modules/messaging/standard-objects/message-thread.object-metadata.ts +++ b/packages/twenty-server/src/modules/messaging/standard-objects/message-thread.workspace-entity.ts @@ -6,10 +6,10 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { MESSAGE_THREAD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageObjectMetadata } from 'src/modules/messaging/standard-objects/message.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageWorkspaceEntity } from 'src/modules/messaging/standard-objects/message.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; @@ -25,18 +25,18 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class MessageThreadObjectMetadata extends BaseWorkspaceEntity { +export class MessageThreadWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceRelation({ standardId: MESSAGE_THREAD_STANDARD_FIELD_IDS.messages, type: RelationMetadataType.ONE_TO_MANY, label: 'Messages', description: 'Messages from the thread.', icon: 'IconMessage', - inverseSideTarget: () => MessageObjectMetadata, + inverseSideTarget: () => MessageWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - messages: Relation; + messages: Relation; @WorkspaceRelation({ standardId: @@ -45,11 +45,11 @@ export class MessageThreadObjectMetadata extends BaseWorkspaceEntity { label: 'Message Channel Association', description: 'Messages from the channel', icon: 'IconMessage', - inverseSideTarget: () => MessageChannelMessageAssociationObjectMetadata, + inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity, onDelete: RelationOnDeleteAction.RESTRICT, }) @WorkspaceIsNullable() messageChannelMessageAssociations: Relation< - MessageChannelMessageAssociationObjectMetadata[] + MessageChannelMessageAssociationWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/messaging/standard-objects/message.object-metadata.ts b/packages/twenty-server/src/modules/messaging/standard-objects/message.workspace-entity.ts similarity index 81% rename from packages/twenty-server/src/modules/messaging/standard-objects/message.object-metadata.ts rename to packages/twenty-server/src/modules/messaging/standard-objects/message.workspace-entity.ts index 2d7ed865261..03f5752b48c 100644 --- a/packages/twenty-server/src/modules/messaging/standard-objects/message.object-metadata.ts +++ b/packages/twenty-server/src/modules/messaging/standard-objects/message.workspace-entity.ts @@ -7,11 +7,11 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { MESSAGE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { MessageChannelMessageAssociationObjectMetadata } from 'src/modules/messaging/standard-objects/message-channel-message-association.object-metadata'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; -import { MessageThreadObjectMetadata } from 'src/modules/messaging/standard-objects/message-thread.object-metadata'; +import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-channel-message-association.workspace-entity'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; +import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-thread.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -28,7 +28,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class MessageObjectMetadata extends BaseWorkspaceEntity { +export class MessageWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: MESSAGE_STANDARD_FIELD_IDS.headerMessageId, type: FieldMetadataType.TEXT, @@ -87,12 +87,12 @@ export class MessageObjectMetadata extends BaseWorkspaceEntity { description: 'Message Thread Id', icon: 'IconHash', joinColumn: 'messageThreadId', - inverseSideTarget: () => MessageThreadObjectMetadata, + inverseSideTarget: () => MessageThreadWorkspaceEntity, inverseSideFieldKey: 'messages', onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - messageThread: Relation; + messageThread: Relation; @WorkspaceRelation({ standardId: MESSAGE_STANDARD_FIELD_IDS.messageParticipants, @@ -100,11 +100,11 @@ export class MessageObjectMetadata extends BaseWorkspaceEntity { label: 'Message Participants', description: 'Message Participants', icon: 'IconUserCircle', - inverseSideTarget: () => MessageParticipantObjectMetadata, + inverseSideTarget: () => MessageParticipantWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - messageParticipants: Relation; + messageParticipants: Relation; @WorkspaceRelation({ standardId: MESSAGE_STANDARD_FIELD_IDS.messageChannelMessageAssociations, @@ -112,11 +112,11 @@ export class MessageObjectMetadata extends BaseWorkspaceEntity { label: 'Message Channel Association', description: 'Messages from the channel.', icon: 'IconMessage', - inverseSideTarget: () => MessageChannelMessageAssociationObjectMetadata, + inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() messageChannelMessageAssociations: Relation< - MessageChannelMessageAssociationObjectMetadata[] + MessageChannelMessageAssociationWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.object-metadata.ts b/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts similarity index 79% rename from packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.object-metadata.ts rename to packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts index 224ac5fe9ff..5ec506eb57c 100644 --- a/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.object-metadata.ts +++ b/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts @@ -8,14 +8,14 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ActivityTargetObjectMetadata } from 'src/modules/activity/standard-objects/activity-target.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { FavoriteObjectMetadata } from 'src/modules/favorite/standard-objects/favorite.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; +import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; @@ -31,7 +31,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re icon: 'IconTargetArrow', }) @WorkspaceIsNotAuditLogged() -export class OpportunityObjectMetadata extends BaseWorkspaceEntity { +export class OpportunityWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: OPPORTUNITY_STANDARD_FIELD_IDS.name, type: FieldMetadataType.TEXT, @@ -111,12 +111,12 @@ export class OpportunityObjectMetadata extends BaseWorkspaceEntity { description: 'Opportunity point of contact', icon: 'IconUser', joinColumn: 'pointOfContactId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'pointOfContactForOpportunities', onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - pointOfContact: Relation; + pointOfContact: Relation; @WorkspaceRelation({ standardId: OPPORTUNITY_STANDARD_FIELD_IDS.company, @@ -125,12 +125,12 @@ export class OpportunityObjectMetadata extends BaseWorkspaceEntity { description: 'Opportunity company', icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'opportunities', onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - company: Relation; + company: Relation; @WorkspaceRelation({ standardId: OPPORTUNITY_STANDARD_FIELD_IDS.favorites, @@ -138,12 +138,12 @@ export class OpportunityObjectMetadata extends BaseWorkspaceEntity { label: 'Favorites', description: 'Favorites linked to the opportunity', icon: 'IconHeart', - inverseSideTarget: () => FavoriteObjectMetadata, + inverseSideTarget: () => FavoriteWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - favorites: Relation; + favorites: Relation; @WorkspaceRelation({ standardId: OPPORTUNITY_STANDARD_FIELD_IDS.activityTargets, @@ -151,11 +151,11 @@ export class OpportunityObjectMetadata extends BaseWorkspaceEntity { label: 'Activities', description: 'Activities tied to the opportunity', icon: 'IconCheckbox', - inverseSideTarget: () => ActivityTargetObjectMetadata, + inverseSideTarget: () => ActivityTargetWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - activityTargets: Relation; + activityTargets: Relation; @WorkspaceRelation({ standardId: OPPORTUNITY_STANDARD_FIELD_IDS.attachments, @@ -163,11 +163,11 @@ export class OpportunityObjectMetadata extends BaseWorkspaceEntity { label: 'Attachments', description: 'Attachments linked to the opportunity', icon: 'IconFileImport', - inverseSideTarget: () => AttachmentObjectMetadata, + inverseSideTarget: () => AttachmentWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() - attachments: Relation; + attachments: Relation; @WorkspaceRelation({ standardId: OPPORTUNITY_STANDARD_FIELD_IDS.timelineActivities, @@ -175,9 +175,9 @@ export class OpportunityObjectMetadata extends BaseWorkspaceEntity { label: 'Timeline Activities', description: 'Timeline Activities linked to the opportunity.', icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityObjectMetadata, + inverseSideTarget: () => TimelineActivityWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - timelineActivities: Relation; + timelineActivities: Relation; } diff --git a/packages/twenty-server/src/modules/person/repositories/person.repository.ts b/packages/twenty-server/src/modules/person/repositories/person.repository.ts index d191d0a5467..57e1464fc95 100644 --- a/packages/twenty-server/src/modules/person/repositories/person.repository.ts +++ b/packages/twenty-server/src/modules/person/repositories/person.repository.ts @@ -4,7 +4,7 @@ import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; import { getFlattenedValuesAndValuesStringForBatchRawQuery } from 'src/modules/calendar/utils/get-flattened-values-and-values-string-for-batch-raw-query.util'; @Injectable() @@ -17,7 +17,7 @@ export class PersonRepository { emails: string[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -56,7 +56,7 @@ export class PersonRepository { }[], workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/person/standard-objects/person.object-metadata.ts b/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts similarity index 75% rename from packages/twenty-server/src/modules/person/standard-objects/person.object-metadata.ts rename to packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts index 8615dd94afb..23b5c33adf1 100644 --- a/packages/twenty-server/src/modules/person/standard-objects/person.object-metadata.ts +++ b/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts @@ -9,16 +9,16 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { PERSON_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ActivityTargetObjectMetadata } from 'src/modules/activity/standard-objects/activity-target.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { FavoriteObjectMetadata } from 'src/modules/favorite/standard-objects/favorite.object-metadata'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; +import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; @@ -32,7 +32,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re description: 'A person', icon: 'IconUser', }) -export class PersonObjectMetadata extends BaseWorkspaceEntity { +export class PersonWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: PERSON_STANDARD_FIELD_IDS.name, type: FieldMetadataType.FULL_NAME, @@ -128,11 +128,11 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { description: 'Contact’s company', icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'people', }) @WorkspaceIsNullable() - company: Relation; + company: Relation; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.pointOfContactForOpportunities, @@ -140,11 +140,11 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'POC for Opportunities', description: 'Point of Contact for Opportunities', icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityObjectMetadata, + inverseSideTarget: () => OpportunityWorkspaceEntity, inverseSideFieldKey: 'pointOfContact', onDelete: RelationOnDeleteAction.SET_NULL, }) - pointOfContactForOpportunities: Relation; + pointOfContactForOpportunities: Relation; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.activityTargets, @@ -152,10 +152,10 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'Activities', description: 'Activities tied to the contact', icon: 'IconCheckbox', - inverseSideTarget: () => ActivityTargetObjectMetadata, + inverseSideTarget: () => ActivityTargetWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) - activityTargets: Relation; + activityTargets: Relation; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.favorites, @@ -163,11 +163,11 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'Favorites', description: 'Favorites linked to the contact', icon: 'IconHeart', - inverseSideTarget: () => FavoriteObjectMetadata, + inverseSideTarget: () => FavoriteWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsSystem() - favorites: Relation; + favorites: Relation; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.attachments, @@ -175,10 +175,10 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'Attachments', description: 'Attachments linked to the contact.', icon: 'IconFileImport', - inverseSideTarget: () => AttachmentObjectMetadata, + inverseSideTarget: () => AttachmentWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) - attachments: Relation; + attachments: Relation; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.messageParticipants, @@ -186,12 +186,12 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'Message Participants', description: 'Message Participants', icon: 'IconUserCircle', - inverseSideTarget: () => MessageParticipantObjectMetadata, + inverseSideTarget: () => MessageParticipantWorkspaceEntity, inverseSideFieldKey: 'person', onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsSystem() - messageParticipants: Relation; + messageParticipants: Relation; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.calendarEventParticipants, @@ -199,11 +199,13 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'Calendar Event Participants', description: 'Calendar Event Participants', icon: 'IconCalendar', - inverseSideTarget: () => CalendarEventParticipantObjectMetadata, + inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsSystem() - calendarEventParticipants: Relation; + calendarEventParticipants: Relation< + CalendarEventParticipantWorkspaceEntity[] + >; @WorkspaceRelation({ standardId: PERSON_STANDARD_FIELD_IDS.timelineActivities, @@ -211,10 +213,10 @@ export class PersonObjectMetadata extends BaseWorkspaceEntity { label: 'Events', description: 'Events linked to the company', icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityObjectMetadata, + inverseSideTarget: () => TimelineActivityWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - timelineActivities: Relation; + timelineActivities: Relation; } diff --git a/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts b/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts index 32d4ca26961..32d8b763700 100644 --- a/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts +++ b/packages/twenty-server/src/modules/timeline/jobs/create-audit-log-from-internal-event.ts @@ -5,18 +5,18 @@ import { MessageQueueJob } from 'src/engine/integrations/message-queue/interface import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { AuditLogRepository } from 'src/modules/timeline/repositiories/audit-log.repository'; -import { AuditLogObjectMetadata } from 'src/modules/timeline/standard-objects/audit-log.object-metadata'; +import { AuditLogWorkspaceEntity } from 'src/modules/timeline/standard-objects/audit-log.workspace-entity'; import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Injectable() export class CreateAuditLogFromInternalEvent implements MessageQueueJob { constructor( - @InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata) + @InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity) private readonly workspaceMemberService: WorkspaceMemberRepository, - @InjectObjectMetadataRepository(AuditLogObjectMetadata) + @InjectObjectMetadataRepository(AuditLogWorkspaceEntity) private readonly auditLogRepository: AuditLogRepository, ) {} diff --git a/packages/twenty-server/src/modules/timeline/jobs/timeline-job.module.ts b/packages/twenty-server/src/modules/timeline/jobs/timeline-job.module.ts index 755f613a647..3fd03709ce2 100644 --- a/packages/twenty-server/src/modules/timeline/jobs/timeline-job.module.ts +++ b/packages/twenty-server/src/modules/timeline/jobs/timeline-job.module.ts @@ -3,15 +3,15 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { CreateAuditLogFromInternalEvent } from 'src/modules/timeline/jobs/create-audit-log-from-internal-event'; import { UpsertTimelineActivityFromInternalEvent } from 'src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job'; -import { AuditLogObjectMetadata } from 'src/modules/timeline/standard-objects/audit-log.object-metadata'; +import { AuditLogWorkspaceEntity } from 'src/modules/timeline/standard-objects/audit-log.workspace-entity'; import { TimelineActivityModule } from 'src/modules/timeline/timeline-activity.module'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - WorkspaceMemberObjectMetadata, - AuditLogObjectMetadata, + WorkspaceMemberWorkspaceEntity, + AuditLogWorkspaceEntity, ]), TimelineActivityModule, ], diff --git a/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts b/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts index 36410bb4e9b..2f849076496 100644 --- a/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts +++ b/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts @@ -5,7 +5,7 @@ import { MessageQueueJob } from 'src/engine/integrations/message-queue/interface import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/types/object-record.base.event'; import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { WorkspaceMemberRepository } from 'src/modules/workspace-member/repositories/workspace-member.repository'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { TimelineActivityService } from 'src/modules/timeline/services/timeline-activity.service'; @Injectable() @@ -13,7 +13,7 @@ export class UpsertTimelineActivityFromInternalEvent implements MessageQueueJob { constructor( - @InjectObjectMetadataRepository(WorkspaceMemberObjectMetadata) + @InjectObjectMetadataRepository(WorkspaceMemberWorkspaceEntity) private readonly workspaceMemberService: WorkspaceMemberRepository, private readonly timelineActivityService: TimelineActivityService, ) {} diff --git a/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts b/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts index 74117c362cd..eee199b10e5 100644 --- a/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts +++ b/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts @@ -4,7 +4,7 @@ import { ObjectRecordBaseEvent } from 'src/engine/integrations/event-emitter/typ import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { TimelineActivityRepository } from 'src/modules/timeline/repositiories/timeline-activity.repository'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; type TransformedEvent = ObjectRecordBaseEvent & { objectName?: string; @@ -16,7 +16,7 @@ type TransformedEvent = ObjectRecordBaseEvent & { @Injectable() export class TimelineActivityService { constructor( - @InjectObjectMetadataRepository(TimelineActivityObjectMetadata) + @InjectObjectMetadataRepository(TimelineActivityWorkspaceEntity) private readonly timelineActivityRepository: TimelineActivityRepository, private readonly workspaceDataSourceService: WorkspaceDataSourceService, ) {} diff --git a/packages/twenty-server/src/modules/timeline/standard-objects/audit-log.object-metadata.ts b/packages/twenty-server/src/modules/timeline/standard-objects/audit-log.workspace-entity.ts similarity index 90% rename from packages/twenty-server/src/modules/timeline/standard-objects/audit-log.object-metadata.ts rename to packages/twenty-server/src/modules/timeline/standard-objects/audit-log.workspace-entity.ts index 4abf6bb22b1..d7b42a75b08 100644 --- a/packages/twenty-server/src/modules/timeline/standard-objects/audit-log.object-metadata.ts +++ b/packages/twenty-server/src/modules/timeline/standard-objects/audit-log.workspace-entity.ts @@ -3,9 +3,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { AUDIT_LOGS_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; @@ -21,7 +21,7 @@ import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metad icon: 'IconIconTimelineEvent', }) @WorkspaceIsSystem() -export class AuditLogObjectMetadata extends BaseWorkspaceEntity { +export class AuditLogWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: AUDIT_LOGS_STANDARD_FIELD_IDS.name, type: FieldMetadataType.TEXT, @@ -87,9 +87,9 @@ export class AuditLogObjectMetadata extends BaseWorkspaceEntity { description: 'Event workspace member', icon: 'IconCircleUser', joinColumn: 'workspaceMemberId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'auditLogs', }) @WorkspaceIsNullable() - workspaceMember: Relation; + workspaceMember: Relation; } diff --git a/packages/twenty-server/src/modules/timeline/standard-objects/behavioral-event.object-metadata.ts b/packages/twenty-server/src/modules/timeline/standard-objects/behavioral-event.workspace-entity.ts similarity index 96% rename from packages/twenty-server/src/modules/timeline/standard-objects/behavioral-event.object-metadata.ts rename to packages/twenty-server/src/modules/timeline/standard-objects/behavioral-event.workspace-entity.ts index 961c03f3a55..3460768e4f8 100644 --- a/packages/twenty-server/src/modules/timeline/standard-objects/behavioral-event.object-metadata.ts +++ b/packages/twenty-server/src/modules/timeline/standard-objects/behavioral-event.workspace-entity.ts @@ -5,7 +5,7 @@ import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { BEHAVIORAL_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; @@ -21,7 +21,7 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync @WorkspaceGate({ featureFlag: FeatureFlagKeys.IsEventObjectEnabled, }) -export class BehavioralEventObjectMetadata extends BaseWorkspaceEntity { +export class BehavioralEventWorkspaceEntity extends BaseWorkspaceEntity { /** * * Common in Segment, Rudderstack, etc. diff --git a/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.object-metadata.ts b/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts similarity index 84% rename from packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.object-metadata.ts rename to packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts index bc0d672f284..40cd4930768 100644 --- a/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.object-metadata.ts +++ b/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts @@ -3,13 +3,13 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { OpportunityObjectMetadata } from 'src/modules/opportunity/standard-objects/opportunity.object-metadata'; -import { PersonObjectMetadata } from 'src/modules/person/standard-objects/person.object-metadata'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -28,7 +28,7 @@ import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/works }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class TimelineActivityObjectMetadata extends BaseWorkspaceEntity { +export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.happensAt, type: FieldMetadataType.DATE_TIME, @@ -96,11 +96,11 @@ export class TimelineActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Event workspace member', icon: 'IconCircleUser', joinColumn: 'workspaceMemberId', - inverseSideTarget: () => WorkspaceMemberObjectMetadata, + inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, inverseSideFieldKey: 'timelineActivities', }) @WorkspaceIsNullable() - workspaceMember: Relation; + workspaceMember: Relation; @WorkspaceRelation({ standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.person, @@ -109,11 +109,11 @@ export class TimelineActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Event person', icon: 'IconUser', joinColumn: 'personId', - inverseSideTarget: () => PersonObjectMetadata, + inverseSideTarget: () => PersonWorkspaceEntity, inverseSideFieldKey: 'timelineActivities', }) @WorkspaceIsNullable() - person: Relation; + person: Relation; @WorkspaceRelation({ standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.company, @@ -122,11 +122,11 @@ export class TimelineActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Event company', icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'timelineActivities', }) @WorkspaceIsNullable() - company: Relation; + company: Relation; @WorkspaceRelation({ standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.opportunity, @@ -135,11 +135,11 @@ export class TimelineActivityObjectMetadata extends BaseWorkspaceEntity { description: 'Event opportunity', icon: 'IconTargetArrow', joinColumn: 'opportunityId', - inverseSideTarget: () => OpportunityObjectMetadata, + inverseSideTarget: () => OpportunityWorkspaceEntity, inverseSideFieldKey: 'timelineActivities', }) @WorkspaceIsNullable() - opportunity: Relation; + opportunity: Relation; @WorkspaceDynamicRelation({ type: RelationMetadataType.MANY_TO_ONE, diff --git a/packages/twenty-server/src/modules/timeline/timeline-activity.module.ts b/packages/twenty-server/src/modules/timeline/timeline-activity.module.ts index e7b044d2737..945e07d77f6 100644 --- a/packages/twenty-server/src/modules/timeline/timeline-activity.module.ts +++ b/packages/twenty-server/src/modules/timeline/timeline-activity.module.ts @@ -3,12 +3,14 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { TimelineActivityService } from 'src/modules/timeline/services/timeline-activity.service'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; @Module({ imports: [ WorkspaceDataSourceModule, - ObjectMetadataRepositoryModule.forFeature([TimelineActivityObjectMetadata]), + ObjectMetadataRepositoryModule.forFeature([ + TimelineActivityWorkspaceEntity, + ]), ], providers: [TimelineActivityService], exports: [TimelineActivityService], diff --git a/packages/twenty-server/src/modules/view/standard-objects/view-field.object-metadata.ts b/packages/twenty-server/src/modules/view/standard-objects/view-field.workspace-entity.ts similarity index 90% rename from packages/twenty-server/src/modules/view/standard-objects/view-field.object-metadata.ts rename to packages/twenty-server/src/modules/view/standard-objects/view-field.workspace-entity.ts index 75c3a944e73..424f4299ce5 100644 --- a/packages/twenty-server/src/modules/view/standard-objects/view-field.object-metadata.ts +++ b/packages/twenty-server/src/modules/view/standard-objects/view-field.workspace-entity.ts @@ -5,11 +5,11 @@ import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; import { VIEW_FIELD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ViewObjectMetadata } from 'src/modules/view/standard-objects/view.object-metadata'; +import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity'; @WorkspaceEntity({ standardId: STANDARD_OBJECT_IDS.viewField, @@ -21,7 +21,7 @@ import { ViewObjectMetadata } from 'src/modules/view/standard-objects/view.objec }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class ViewFieldObjectMetadata extends BaseWorkspaceEntity { +export class ViewFieldWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: VIEW_FIELD_STANDARD_FIELD_IDS.fieldMetadataId, type: FieldMetadataType.UUID, @@ -67,10 +67,10 @@ export class ViewFieldObjectMetadata extends BaseWorkspaceEntity { label: 'View', description: 'View Field related view', icon: 'IconLayoutCollage', - inverseSideTarget: () => ViewObjectMetadata, + inverseSideTarget: () => ViewWorkspaceEntity, inverseSideFieldKey: 'viewFields', joinColumn: 'viewId', }) @WorkspaceIsNullable() - view?: ViewObjectMetadata; + view?: ViewWorkspaceEntity; } diff --git a/packages/twenty-server/src/modules/view/standard-objects/view-filter.object-metadata.ts b/packages/twenty-server/src/modules/view/standard-objects/view-filter.workspace-entity.ts similarity index 90% rename from packages/twenty-server/src/modules/view/standard-objects/view-filter.object-metadata.ts rename to packages/twenty-server/src/modules/view/standard-objects/view-filter.workspace-entity.ts index 8be331d1157..bce3e944aff 100644 --- a/packages/twenty-server/src/modules/view/standard-objects/view-filter.object-metadata.ts +++ b/packages/twenty-server/src/modules/view/standard-objects/view-filter.workspace-entity.ts @@ -3,9 +3,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { VIEW_FILTER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ViewObjectMetadata } from 'src/modules/view/standard-objects/view.object-metadata'; +import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -23,7 +23,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace- }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class ViewFilterObjectMetadata extends BaseWorkspaceEntity { +export class ViewFilterWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: VIEW_FILTER_STANDARD_FIELD_IDS.fieldMetadataId, type: FieldMetadataType.UUID, @@ -64,9 +64,9 @@ export class ViewFilterObjectMetadata extends BaseWorkspaceEntity { description: 'View Filter related view', icon: 'IconLayoutCollage', joinColumn: 'viewId', - inverseSideTarget: () => ViewObjectMetadata, + inverseSideTarget: () => ViewWorkspaceEntity, inverseSideFieldKey: 'viewFilters', }) @WorkspaceIsNullable() - view: Relation; + view: Relation; } diff --git a/packages/twenty-server/src/modules/view/standard-objects/view-sort.object-metadata.ts b/packages/twenty-server/src/modules/view/standard-objects/view-sort.workspace-entity.ts similarity index 89% rename from packages/twenty-server/src/modules/view/standard-objects/view-sort.object-metadata.ts rename to packages/twenty-server/src/modules/view/standard-objects/view-sort.workspace-entity.ts index 5c1c61a8d03..458d4d31688 100644 --- a/packages/twenty-server/src/modules/view/standard-objects/view-sort.object-metadata.ts +++ b/packages/twenty-server/src/modules/view/standard-objects/view-sort.workspace-entity.ts @@ -3,9 +3,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { VIEW_SORT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ViewObjectMetadata } from 'src/modules/view/standard-objects/view.object-metadata'; +import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -23,7 +23,7 @@ import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metad }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class ViewSortObjectMetadata extends BaseWorkspaceEntity { +export class ViewSortWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: VIEW_SORT_STANDARD_FIELD_IDS.fieldMetadataId, type: FieldMetadataType.UUID, @@ -49,9 +49,9 @@ export class ViewSortObjectMetadata extends BaseWorkspaceEntity { description: 'View Sort related view', icon: 'IconLayoutCollage', joinColumn: 'viewId', - inverseSideTarget: () => ViewObjectMetadata, + inverseSideTarget: () => ViewWorkspaceEntity, inverseSideFieldKey: 'viewSorts', }) @WorkspaceIsNullable() - view: Relation; + view: Relation; } diff --git a/packages/twenty-server/src/modules/view/standard-objects/view.object-metadata.ts b/packages/twenty-server/src/modules/view/standard-objects/view.workspace-entity.ts similarity index 84% rename from packages/twenty-server/src/modules/view/standard-objects/view.object-metadata.ts rename to packages/twenty-server/src/modules/view/standard-objects/view.workspace-entity.ts index aff52692e63..b453f0df9f8 100644 --- a/packages/twenty-server/src/modules/view/standard-objects/view.object-metadata.ts +++ b/packages/twenty-server/src/modules/view/standard-objects/view.workspace-entity.ts @@ -7,11 +7,11 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { VIEW_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ViewFieldObjectMetadata } from 'src/modules/view/standard-objects/view-field.object-metadata'; -import { ViewFilterObjectMetadata } from 'src/modules/view/standard-objects/view-filter.object-metadata'; -import { ViewSortObjectMetadata } from 'src/modules/view/standard-objects/view-sort.object-metadata'; +import { ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity'; +import { ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter.workspace-entity'; +import { ViewSortWorkspaceEntity } from 'src/modules/view/standard-objects/view-sort.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -28,7 +28,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class ViewObjectMetadata extends BaseWorkspaceEntity { +export class ViewWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: VIEW_STANDARD_FIELD_IDS.name, type: FieldMetadataType.TEXT, @@ -105,11 +105,11 @@ export class ViewObjectMetadata extends BaseWorkspaceEntity { label: 'View Fields', description: 'View Fields', icon: 'IconTag', - inverseSideTarget: () => ViewFieldObjectMetadata, + inverseSideTarget: () => ViewFieldWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - viewFields: Relation; + viewFields: Relation; @WorkspaceRelation({ standardId: VIEW_STANDARD_FIELD_IDS.viewFilters, @@ -117,11 +117,11 @@ export class ViewObjectMetadata extends BaseWorkspaceEntity { label: 'View Filters', description: 'View Filters', icon: 'IconFilterBolt', - inverseSideTarget: () => ViewFilterObjectMetadata, + inverseSideTarget: () => ViewFilterWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - viewFilters: Relation; + viewFilters: Relation; @WorkspaceRelation({ standardId: VIEW_STANDARD_FIELD_IDS.viewSorts, @@ -129,9 +129,9 @@ export class ViewObjectMetadata extends BaseWorkspaceEntity { label: 'View Sorts', description: 'View Sorts', icon: 'IconArrowsSort', - inverseSideTarget: () => ViewSortObjectMetadata, + inverseSideTarget: () => ViewSortWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() - viewSorts: Relation; + viewSorts: Relation; } diff --git a/packages/twenty-server/src/modules/webhook/standard-objects/webhook.object-metadata.ts b/packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts similarity index 93% rename from packages/twenty-server/src/modules/webhook/standard-objects/webhook.object-metadata.ts rename to packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts index d4ebe3946ae..7436ea12441 100644 --- a/packages/twenty-server/src/modules/webhook/standard-objects/webhook.object-metadata.ts +++ b/packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts @@ -3,7 +3,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WEBHOOK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; @@ -17,7 +17,7 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() -export class WebhookObjectMetadata extends BaseWorkspaceEntity { +export class WebhookWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: WEBHOOK_STANDARD_FIELD_IDS.targetUrl, type: FieldMetadataType.TEXT, diff --git a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts index 637686747fe..efa6cd863cc 100644 --- a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts @@ -5,18 +5,18 @@ import { DeleteOneResolverArgs } from 'src/engine/api/graphql/workspace-resolver import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator'; import { CommentRepository } from 'src/modules/activity/repositories/comment.repository'; -import { CommentObjectMetadata } from 'src/modules/activity/standard-objects/comment.object-metadata'; +import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity'; import { AttachmentRepository } from 'src/modules/attachment/repositories/attachment.repository'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; @Injectable() export class WorkspaceMemberDeleteOnePreQueryHook implements WorkspacePreQueryHook { constructor( - @InjectObjectMetadataRepository(AttachmentObjectMetadata) + @InjectObjectMetadataRepository(AttachmentWorkspaceEntity) private readonly attachmentRepository: AttachmentRepository, - @InjectObjectMetadataRepository(CommentObjectMetadata) + @InjectObjectMetadataRepository(CommentWorkspaceEntity) private readonly commentRepository: CommentRepository, ) {} diff --git a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-query-hook.module.ts b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-query-hook.module.ts index ce3496541fd..14c1ef5e538 100644 --- a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-query-hook.module.ts +++ b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-query-hook.module.ts @@ -1,16 +1,16 @@ import { Module } from '@nestjs/common'; import { ObjectMetadataRepositoryModule } from 'src/engine/object-metadata-repository/object-metadata-repository.module'; -import { CommentObjectMetadata } from 'src/modules/activity/standard-objects/comment.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; +import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; import { WorkspaceMemberDeleteManyPreQueryHook } from 'src/modules/workspace-member/query-hooks/workspace-member-delete-many.pre-query.hook'; import { WorkspaceMemberDeleteOnePreQueryHook } from 'src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook'; @Module({ imports: [ ObjectMetadataRepositoryModule.forFeature([ - AttachmentObjectMetadata, - CommentObjectMetadata, + AttachmentWorkspaceEntity, + CommentWorkspaceEntity, ]), ], providers: [ diff --git a/packages/twenty-server/src/modules/workspace-member/repositories/workspace-member.repository.ts b/packages/twenty-server/src/modules/workspace-member/repositories/workspace-member.repository.ts index f2605eb874b..9f821dd88b7 100644 --- a/packages/twenty-server/src/modules/workspace-member/repositories/workspace-member.repository.ts +++ b/packages/twenty-server/src/modules/workspace-member/repositories/workspace-member.repository.ts @@ -3,7 +3,7 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { EntityManager } from 'typeorm'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { WorkspaceMemberObjectMetadata } from 'src/modules/workspace-member/standard-objects/workspace-member.object-metadata'; +import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; import { ObjectRecord } from 'src/engine/workspace-manager/workspace-sync-metadata/types/object-record'; @Injectable() @@ -15,7 +15,7 @@ export class WorkspaceMemberRepository { public async getByIds( userIds: string[], workspaceId: string, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -31,7 +31,7 @@ export class WorkspaceMemberRepository { public async getByIdOrFail( userId: string, workspaceId: string, - ): Promise> { + ): Promise> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); @@ -54,7 +54,7 @@ export class WorkspaceMemberRepository { public async getAllByWorkspaceId( workspaceId: string, transactionManager?: EntityManager, - ): Promise[]> { + ): Promise[]> { const dataSourceSchema = this.workspaceDataSourceService.getSchemaName(workspaceId); diff --git a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.object-metadata.ts b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts similarity index 71% rename from packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.object-metadata.ts rename to packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts index 12ab73c8ac0..1a5f77e4bb9 100644 --- a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.object-metadata.ts +++ b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts @@ -8,19 +8,19 @@ import { } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { WORKSPACE_MEMBER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; -import { ActivityObjectMetadata } from 'src/modules/activity/standard-objects/activity.object-metadata'; -import { AttachmentObjectMetadata } from 'src/modules/attachment/standard-objects/attachment.object-metadata'; -import { BlocklistObjectMetadata } from 'src/modules/connected-account/standard-objects/blocklist.object-metadata'; -import { CalendarEventParticipantObjectMetadata } from 'src/modules/calendar/standard-objects/calendar-event-participant.object-metadata'; -import { CommentObjectMetadata } from 'src/modules/activity/standard-objects/comment.object-metadata'; -import { CompanyObjectMetadata } from 'src/modules/company/standard-objects/company.object-metadata'; -import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata'; -import { FavoriteObjectMetadata } from 'src/modules/favorite/standard-objects/favorite.object-metadata'; -import { MessageParticipantObjectMetadata } from 'src/modules/messaging/standard-objects/message-participant.object-metadata'; -import { TimelineActivityObjectMetadata } from 'src/modules/timeline/standard-objects/timeline-activity.object-metadata'; -import { AuditLogObjectMetadata } from 'src/modules/timeline/standard-objects/audit-log.object-metadata'; +import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity'; +import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { BlocklistWorkspaceEntity } from 'src/modules/connected-account/standard-objects/blocklist.workspace-entity'; +import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/standard-objects/calendar-event-participant.workspace-entity'; +import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity'; +import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/standard-objects/message-participant.workspace-entity'; +import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { AuditLogWorkspaceEntity } from 'src/modules/timeline/standard-objects/audit-log.workspace-entity'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-object.decorator'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; @@ -37,7 +37,7 @@ import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-re }) @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() -export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { +export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name, type: FieldMetadataType.FULL_NAME, @@ -101,11 +101,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Authored activities', description: 'Activities created by the workspace member', icon: 'IconCheckbox', - inverseSideTarget: () => ActivityObjectMetadata, + inverseSideTarget: () => ActivityWorkspaceEntity, inverseSideFieldKey: 'author', onDelete: RelationOnDeleteAction.SET_NULL, }) - authoredActivities: Relation; + authoredActivities: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.assignedActivities, @@ -113,11 +113,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Assigned activities', description: 'Activities assigned to the workspace member', icon: 'IconCheckbox', - inverseSideTarget: () => ActivityObjectMetadata, + inverseSideTarget: () => ActivityWorkspaceEntity, inverseSideFieldKey: 'assignee', onDelete: RelationOnDeleteAction.SET_NULL, }) - assignedActivities: Relation; + assignedActivities: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.favorites, @@ -125,10 +125,10 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Favorites', description: 'Favorites linked to the workspace member', icon: 'IconHeart', - inverseSideTarget: () => FavoriteObjectMetadata, + inverseSideTarget: () => FavoriteWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) - favorites: Relation; + favorites: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.accountOwnerForCompanies, @@ -136,11 +136,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Account Owner For Companies', description: 'Account owner for companies', icon: 'IconBriefcase', - inverseSideTarget: () => CompanyObjectMetadata, + inverseSideTarget: () => CompanyWorkspaceEntity, inverseSideFieldKey: 'accountOwner', onDelete: RelationOnDeleteAction.SET_NULL, }) - accountOwnerForCompanies: Relation; + accountOwnerForCompanies: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.authoredAttachments, @@ -148,11 +148,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Authored attachments', description: 'Attachments created by the workspace member', icon: 'IconFileImport', - inverseSideTarget: () => AttachmentObjectMetadata, + inverseSideTarget: () => AttachmentWorkspaceEntity, inverseSideFieldKey: 'author', onDelete: RelationOnDeleteAction.SET_NULL, }) - authoredAttachments: Relation; + authoredAttachments: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.authoredComments, @@ -160,11 +160,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Authored comments', description: 'Authored comments', icon: 'IconComment', - inverseSideTarget: () => CommentObjectMetadata, + inverseSideTarget: () => CommentWorkspaceEntity, inverseSideFieldKey: 'author', onDelete: RelationOnDeleteAction.SET_NULL, }) - authoredComments: Relation; + authoredComments: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.connectedAccounts, @@ -172,11 +172,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Connected accounts', description: 'Connected accounts', icon: 'IconAt', - inverseSideTarget: () => ConnectedAccountObjectMetadata, + inverseSideTarget: () => ConnectedAccountWorkspaceEntity, inverseSideFieldKey: 'accountOwner', onDelete: RelationOnDeleteAction.CASCADE, }) - connectedAccounts: Relation; + connectedAccounts: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.messageParticipants, @@ -184,11 +184,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Message Participants', description: 'Message Participants', icon: 'IconUserCircle', - inverseSideTarget: () => MessageParticipantObjectMetadata, + inverseSideTarget: () => MessageParticipantWorkspaceEntity, inverseSideFieldKey: 'workspaceMember', onDelete: RelationOnDeleteAction.SET_NULL, }) - messageParticipants: Relation; + messageParticipants: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.blocklist, @@ -196,11 +196,11 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Blocklist', description: 'Blocklisted handles', icon: 'IconForbid2', - inverseSideTarget: () => BlocklistObjectMetadata, + inverseSideTarget: () => BlocklistWorkspaceEntity, inverseSideFieldKey: 'workspaceMember', onDelete: RelationOnDeleteAction.SET_NULL, }) - blocklist: Relation; + blocklist: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.calendarEventParticipants, @@ -208,11 +208,13 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Calendar Event Participants', description: 'Calendar Event Participants', icon: 'IconCalendar', - inverseSideTarget: () => CalendarEventParticipantObjectMetadata, + inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity, inverseSideFieldKey: 'workspaceMember', onDelete: RelationOnDeleteAction.SET_NULL, }) - calendarEventParticipants: Relation; + calendarEventParticipants: Relation< + CalendarEventParticipantWorkspaceEntity[] + >; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timelineActivities, @@ -220,12 +222,12 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Events', description: 'Events linked to the workspace member', icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityObjectMetadata, + inverseSideTarget: () => TimelineActivityWorkspaceEntity, onDelete: RelationOnDeleteAction.CASCADE, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - timelineActivities: Relation; + timelineActivities: Relation; @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.auditLogs, @@ -233,10 +235,10 @@ export class WorkspaceMemberObjectMetadata extends BaseWorkspaceEntity { label: 'Audit Logs', description: 'Audit Logs linked to the workspace member', icon: 'IconTimelineEvent', - inverseSideTarget: () => AuditLogObjectMetadata, + inverseSideTarget: () => AuditLogWorkspaceEntity, onDelete: RelationOnDeleteAction.SET_NULL, }) @WorkspaceIsNullable() @WorkspaceIsSystem() - auditLogs: Relation; + auditLogs: Relation; } diff --git a/packages/twenty-server/src/utils/is-plain-object.ts b/packages/twenty-server/src/utils/is-plain-object.ts new file mode 100644 index 00000000000..bc9496ccbfa --- /dev/null +++ b/packages/twenty-server/src/utils/is-plain-object.ts @@ -0,0 +1,9 @@ +export const isPlainObject = (value: T): boolean => { + if (Object.prototype.toString.call(value) !== '[object Object]') { + return false; + } + + const prototype = Object.getPrototypeOf(value); + + return prototype === null || prototype === Object.prototype; +};