Allow custom fields to be editable for system objects and prevent the error for timeline activity on system object pages. (#16268)
Solves #16015
- Added a check in `useTimelineActivities.ts` to see if the system
object page we're viewing has timelineActivity being tracked before
querying to get the activity history.
- Removed @WorkspaceIsObjectUIReadOnly decorator from system objects and
added @WorkspaceIsFieldUIReadOnly to standard and system fields to allow
custom field edits as requested in the issue.
- Did not add calendarEvents or other system objects to timelineActivity
just yet since keeping track of timeline activity for every one of them
felt counter-intuitive and bloated. In order to determine which objects
need timelineActivity, I think we need to fix the broken views of system
objects first, such as the one in the attached screenshots - a good
number of them are broken. The check I added to
`useTimelineActivities.ts` hook displays timeline activity as empty for
the time - error would not be shown as suggested by Thomas.
<img width="1062" height="858" alt="image"
src="https://github.com/user-attachments/assets/e877e0fe-b665-46e3-b785-e84f2af7f833"
/>
<br />
<img width="1061" height="858" alt="image"
src="https://github.com/user-attachments/assets/0eba8c1c-444a-4b13-beda-64b95cf39077"
/>
- Editing custom fields on calendar events (and other objects without
position fields) crashed with TypeError: Cannot convert undefined or
null to object in sortCachedObjectEdges. This happened because some
cached queries had empty orderBy arrays ([]), and the optimistic effect
tried to sort with them. Objects without position fields returned
empty orderBy arrays when there were no sorts, while objects with
position fields automatically got [{ position: 'AscNullsFirst' }].
The backend always adds { id: 'AscNullsFirst' } as a fallback, but
the frontend didn't match this. So, I added { id: 'AscNullsFirst' } to
the Frontend as default orderBy when there are no sorts and no position
field.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Apply per-field UI read-only to system/standard fields and skip
timeline activity fetching when the target object isn’t related; refine
record-table cell open/navigation behavior.
>
> - Server: Replace object-level UI read-only with per-field
`isUIReadOnly` across many standard objects (e.g., `calendarEvent`,
`workspaceMember`, messaging, calendar, favorites, attachments,
workflows, etc.), and mirror this via `@WorkspaceIsFieldUIReadOnly` on
workspace entities.
> - Frontend: In `useTimelineActivities.ts`, check object metadata for a
relation to `timelineActivity` and `skip` the query when absent,
preventing errors on system object pages.
> - Frontend: Simplify/adjust record-table cell logic—remove unused
args, allow navigation from first column when non-empty, block editing
for read-only records (while still allowing navigation), and update
button handlers/hover styles accordingly.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
dac1262d70. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
---------
Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
co-authored by
Félix Malfait
parent
5003fc4196
commit
c6ea7ae288
+12
@@ -50,6 +50,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Attachment name`,
|
||||
icon: 'IconFileUpload',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
name: string | null;
|
||||
|
||||
@@ -60,6 +61,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Attachment full path`,
|
||||
icon: 'IconLink',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
fullPath: string | null;
|
||||
|
||||
@@ -70,6 +72,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Attachment type (deprecated - use fileCategory)`,
|
||||
icon: 'IconList',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsDeprecated()
|
||||
type: string | null;
|
||||
@@ -132,6 +135,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: "'OTHER'",
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
fileCategory: string;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -154,6 +158,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'authoredAttachments',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsDeprecated()
|
||||
author: Relation<WorkspaceMemberWorkspaceEntity> | null;
|
||||
@@ -171,6 +176,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
task: Relation<TaskWorkspaceEntity> | null;
|
||||
|
||||
@@ -187,6 +193,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
note: Relation<NoteWorkspaceEntity> | null;
|
||||
|
||||
@@ -203,6 +210,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
person: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -219,6 +227,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
company: Relation<CompanyWorkspaceEntity> | null;
|
||||
|
||||
@@ -235,6 +244,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
opportunity: Relation<OpportunityWorkspaceEntity> | null;
|
||||
|
||||
@@ -251,6 +261,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
dashboard: Relation<DashboardWorkspaceEntity> | null;
|
||||
|
||||
@@ -267,6 +278,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'attachments',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+3
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
@@ -35,6 +36,7 @@ export class BlocklistWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Handle`,
|
||||
icon: 'IconAt',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handle: string | null;
|
||||
|
||||
@@ -48,6 +50,7 @@ export class BlocklistWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'blocklist',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
workspaceMember: Relation<WorkspaceMemberWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('workspaceMember')
|
||||
|
||||
+5
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -43,6 +44,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
|
||||
description: msg`Event external ID`,
|
||||
icon: 'IconCalendar',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
eventExternalId: string | null;
|
||||
|
||||
@@ -54,6 +56,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
|
||||
description: msg`Recurring Event ID`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
recurringEventExternalId: string | null;
|
||||
|
||||
@@ -68,6 +71,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
|
||||
inverseSideFieldKey: 'calendarChannelEventAssociations',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarChannel: Relation<CalendarChannelWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('calendarChannel')
|
||||
@@ -84,6 +88,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
|
||||
inverseSideFieldKey: 'calendarChannelEventAssociations',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarEvent: Relation<CalendarEventWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('calendarEvent')
|
||||
|
||||
+14
@@ -10,6 +10,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -87,6 +88,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Handle`,
|
||||
icon: 'IconAt',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handle: string | null;
|
||||
|
||||
@@ -129,6 +131,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
},
|
||||
],
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncStatus: CalendarChannelSyncStatus | null;
|
||||
|
||||
@@ -190,6 +193,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${CalendarChannelSyncStage.PENDING_CONFIGURATION}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
syncStage: CalendarChannelSyncStage;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -214,6 +218,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${CalendarChannelVisibility.SHARE_EVERYTHING}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
visibility: string;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -225,6 +230,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconUserCircle',
|
||||
defaultValue: true,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isContactAutoCreationEnabled: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -262,6 +268,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${CalendarChannelContactAutoCreationPolicy.AS_PARTICIPANT_AND_ORGANIZER}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
contactAutoCreationPolicy: CalendarChannelContactAutoCreationPolicy;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -272,6 +279,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconRefresh',
|
||||
defaultValue: true,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isSyncEnabled: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -281,6 +289,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Sync Cursor. Used for syncing events from the calendar provider`,
|
||||
icon: 'IconReload',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncCursor: string | null;
|
||||
|
||||
@@ -291,6 +300,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Last sync date`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncedAt: string | null;
|
||||
|
||||
@@ -301,6 +311,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Sync stage started at`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncStageStartedAt: string | null;
|
||||
|
||||
@@ -312,6 +323,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconX',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
throttleFailureCount: number;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -324,6 +336,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'calendarChannels',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
connectedAccount: Relation<ConnectedAccountWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('connectedAccount')
|
||||
@@ -339,6 +352,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarChannelEventAssociations: Relation<
|
||||
CalendarChannelEventAssociationWorkspaceEntity[]
|
||||
>;
|
||||
|
||||
+8
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -47,6 +48,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
description: msg`Handle`,
|
||||
icon: 'IconMail',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handle: string | null;
|
||||
|
||||
@@ -57,6 +59,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
description: msg`Display Name`,
|
||||
icon: 'IconUser',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
displayName: string | null;
|
||||
|
||||
@@ -68,6 +71,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
icon: 'IconUser',
|
||||
defaultValue: false,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isOrganizer: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -104,6 +108,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
],
|
||||
defaultValue: `'${CalendarEventParticipantResponseStatus.NEEDS_ACTION}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
responseStatus: string;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -116,6 +121,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
inverseSideFieldKey: 'calendarEventParticipants',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarEvent: Relation<CalendarEventWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('calendarEvent')
|
||||
@@ -131,6 +137,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
inverseSideFieldKey: 'calendarEventParticipants',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
person: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -147,6 +154,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
|
||||
inverseSideFieldKey: 'calendarEventParticipants',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workspaceMember: Relation<WorkspaceMemberWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+15
-2
@@ -12,9 +12,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsObjectUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||
import { CALENDAR_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||
@@ -34,7 +34,6 @@ import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/co
|
||||
})
|
||||
@WorkspaceIsSystem()
|
||||
@WorkspaceIsNotAuditLogged()
|
||||
@WorkspaceIsObjectUIReadOnly()
|
||||
export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
@WorkspaceField({
|
||||
standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title,
|
||||
@@ -43,6 +42,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Title`,
|
||||
icon: 'IconH1',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
title: string | null;
|
||||
|
||||
@@ -54,6 +54,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconCalendarCancel',
|
||||
defaultValue: false,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isCanceled: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -64,6 +65,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconHours24',
|
||||
defaultValue: false,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isFullDay: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -73,6 +75,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Start Date`,
|
||||
icon: 'IconCalendarClock',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
startsAt: string | null;
|
||||
|
||||
@@ -83,6 +86,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`End Date`,
|
||||
icon: 'IconCalendarClock',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
endsAt: string | null;
|
||||
|
||||
@@ -93,6 +97,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Creation DateTime`,
|
||||
icon: 'IconCalendarPlus',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
externalCreatedAt: string | null;
|
||||
|
||||
@@ -103,6 +108,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Update DateTime`,
|
||||
icon: 'IconCalendarCog',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
externalUpdatedAt: string | null;
|
||||
|
||||
@@ -113,6 +119,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Description`,
|
||||
icon: 'IconFileDescription',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
description: string | null;
|
||||
|
||||
@@ -123,6 +130,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Location`,
|
||||
icon: 'IconMapPin',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
location: string | null;
|
||||
|
||||
@@ -133,6 +141,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`iCal UID`,
|
||||
icon: 'IconKey',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
iCalUid: string | null;
|
||||
|
||||
@@ -143,6 +152,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Conference Solution`,
|
||||
icon: 'IconScreenShare',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
conferenceSolution: string | null;
|
||||
|
||||
@@ -153,6 +163,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Meet Link`,
|
||||
icon: 'IconLink',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
conferenceLink: LinksMetadata;
|
||||
|
||||
@@ -166,6 +177,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarChannelEventAssociations: Relation<
|
||||
CalendarChannelEventAssociationWorkspaceEntity[]
|
||||
>;
|
||||
@@ -179,6 +191,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarEventParticipants: Relation<
|
||||
CalendarEventParticipantWorkspaceEntity[]
|
||||
>;
|
||||
|
||||
+14
@@ -13,6 +13,7 @@ import { type ImapSmtpCaldavParams } from 'src/engine/core-modules/imap-smtp-cal
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
@@ -42,6 +43,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`The account handle (email, username, phone number, etc.)`,
|
||||
icon: 'IconMail',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handle: string | null;
|
||||
|
||||
@@ -53,6 +55,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconSettings',
|
||||
defaultValue: `'${ConnectedAccountProvider.GOOGLE}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
provider: ConnectedAccountProvider; // field metadata should be a SELECT
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -62,6 +65,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Messaging provider access token`,
|
||||
icon: 'IconKey',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
accessToken: string | null;
|
||||
|
||||
@@ -72,6 +76,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Messaging provider refresh token`,
|
||||
icon: 'IconKey',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
refreshToken: string | null;
|
||||
|
||||
@@ -82,6 +87,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Last credentials refreshed at`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
lastCredentialsRefreshedAt: Date | null;
|
||||
|
||||
@@ -92,6 +98,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Last sync history ID`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
lastSyncHistoryId: string | null;
|
||||
|
||||
@@ -102,6 +109,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Auth failed at`,
|
||||
icon: 'IconX',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
authFailedAt: Date | null;
|
||||
|
||||
@@ -112,6 +120,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Handle Aliases`,
|
||||
icon: 'IconMail',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handleAliases: string | null;
|
||||
|
||||
@@ -122,6 +131,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Scopes`,
|
||||
icon: 'IconSettings',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
scopes: string[] | null;
|
||||
|
||||
@@ -132,6 +142,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`JSON object containing custom connection parameters`,
|
||||
icon: 'IconSettings',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
connectionParameters: ImapSmtpCaldavParams | null;
|
||||
|
||||
@@ -145,6 +156,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'connectedAccounts',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
accountOwner: Relation<WorkspaceMemberWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('accountOwner')
|
||||
@@ -159,6 +171,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => MessageChannelWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
messageChannels: Relation<MessageChannelWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -170,5 +183,6 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => CalendarChannelWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarChannels: Relation<CalendarChannelWorkspaceEntity[]>;
|
||||
}
|
||||
|
||||
+5
-1
@@ -8,11 +8,12 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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 { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||
import { FAVORITE_FOLDER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||
|
||||
@WorkspaceEntity({
|
||||
standardId: STANDARD_OBJECT_IDS.favoriteFolder,
|
||||
@@ -33,6 +34,7 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconList',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
position: number;
|
||||
|
||||
@@ -43,6 +45,7 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Name of the favorite folder`,
|
||||
icon: 'IconText',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
name: string | null;
|
||||
|
||||
@@ -56,5 +59,6 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => FavoriteWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
favorites: Relation<FavoriteWorkspaceEntity[]>;
|
||||
}
|
||||
|
||||
+14
@@ -10,6 +10,7 @@ import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-en
|
||||
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
@@ -47,6 +48,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconList',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
position: number;
|
||||
|
||||
@@ -61,6 +63,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => WorkspaceMemberWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
forWorkspaceMember: Relation<WorkspaceMemberWorkspaceEntity>;
|
||||
|
||||
@@ -77,6 +80,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
person: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -93,6 +97,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
company: Relation<CompanyWorkspaceEntity> | null;
|
||||
|
||||
@@ -109,6 +114,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
favoriteFolder: Relation<FavoriteFolderWorkspaceEntity> | null;
|
||||
|
||||
@@ -125,6 +131,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
opportunity: Relation<OpportunityWorkspaceEntity> | null;
|
||||
|
||||
@@ -141,6 +148,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||
|
||||
@@ -157,6 +165,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workflowVersion: Relation<WorkflowVersionWorkspaceEntity> | null;
|
||||
|
||||
@@ -173,6 +182,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workflowRun: Relation<WorkflowRunWorkspaceEntity> | null;
|
||||
|
||||
@@ -189,6 +199,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
task: Relation<TaskWorkspaceEntity> | null;
|
||||
|
||||
@@ -205,6 +216,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
note: Relation<NoteWorkspaceEntity> | null;
|
||||
|
||||
@@ -221,6 +233,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'favorites',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
dashboard: Relation<DashboardWorkspaceEntity> | null;
|
||||
|
||||
@@ -234,6 +247,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`ViewId`,
|
||||
icon: 'IconView',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
viewId: string;
|
||||
|
||||
|
||||
+7
-1
@@ -1,6 +1,6 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types';
|
||||
import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata';
|
||||
import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types';
|
||||
|
||||
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
|
||||
import { type Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||
@@ -9,6 +9,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -47,6 +48,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
|
||||
description: msg`Message id from the messaging provider`,
|
||||
icon: 'IconHash',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageExternalId: string | null;
|
||||
|
||||
@@ -58,6 +60,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
|
||||
description: msg`Thread id from the messaging provider`,
|
||||
icon: 'IconHash',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageThreadExternalId: string | null;
|
||||
|
||||
@@ -83,6 +86,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
|
||||
],
|
||||
defaultValue: `'${MessageDirection.INCOMING}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
direction: MessageDirection;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -96,6 +100,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
|
||||
inverseSideFieldKey: 'messageChannelMessageAssociations',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageChannel: Relation<MessageChannelWorkspaceEntity> | null;
|
||||
|
||||
@@ -112,6 +117,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
|
||||
inverseSideFieldKey: 'messageChannelMessageAssociations',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
message: Relation<MessageWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+20
@@ -10,6 +10,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -137,6 +138,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageChannelVisibility.SHARE_EVERYTHING}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
visibility: string;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -146,6 +148,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Handle`,
|
||||
icon: 'IconAt',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handle: string | null;
|
||||
|
||||
@@ -171,6 +174,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageChannelType.EMAIL}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
type: string;
|
||||
|
||||
// TODO: Deprecate this field and migrate data to contactAutoCreationFor
|
||||
@@ -182,6 +186,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconUserCircle',
|
||||
defaultValue: true,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isContactAutoCreationEnabled: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -212,6 +217,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageChannelContactAutoCreationPolicy.SENT}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
contactAutoCreationPolicy: MessageChannelContactAutoCreationPolicy;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -236,6 +242,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageFolderImportPolicy.ALL_FOLDERS}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
messageFolderImportPolicy: MessageFolderImportPolicy;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -246,6 +253,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconBriefcase',
|
||||
defaultValue: true,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
excludeNonProfessionalEmails: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -256,6 +264,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconUsersGroup',
|
||||
defaultValue: true,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
excludeGroupEmails: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -286,6 +295,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageChannelPendingGroupEmailsAction.NONE}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
pendingGroupEmailsAction: MessageChannelPendingGroupEmailsAction;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -296,6 +306,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconRefresh',
|
||||
defaultValue: true,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isSyncEnabled: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -305,6 +316,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Last sync cursor`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncCursor: string | null;
|
||||
|
||||
@@ -315,6 +327,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Last sync date`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncedAt: string | null;
|
||||
|
||||
@@ -357,6 +370,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
},
|
||||
],
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncStatus: MessageChannelSyncStatus | null;
|
||||
|
||||
@@ -418,6 +432,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageChannelSyncStage.PENDING_CONFIGURATION}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
syncStage: MessageChannelSyncStage;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -427,6 +442,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Sync stage started at`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncStageStartedAt: string | null;
|
||||
|
||||
@@ -438,6 +454,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconX',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
throttleFailureCount: number;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -450,6 +467,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'messageChannels',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
connectedAccount: Relation<ConnectedAccountWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('connectedAccount')
|
||||
@@ -465,6 +483,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageChannelMessageAssociations: Relation<
|
||||
MessageChannelMessageAssociationWorkspaceEntity[]
|
||||
@@ -479,6 +498,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => MessageFolderWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageFolders: Relation<MessageFolderWorkspaceEntity[]>;
|
||||
}
|
||||
|
||||
+9
@@ -11,6 +11,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -52,6 +53,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Folder name`,
|
||||
icon: 'IconFolder',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
name: string | null;
|
||||
|
||||
@@ -65,6 +67,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'messageFolders',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
messageChannel: Relation<MessageChannelWorkspaceEntity>;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -74,6 +77,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Sync Cursor`,
|
||||
icon: 'IconHash',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
syncCursor: string | null;
|
||||
|
||||
@@ -85,6 +89,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconCheck',
|
||||
defaultValue: false,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isSentFolder: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -95,6 +100,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconCheck',
|
||||
defaultValue: false,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
isSynced: boolean;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -105,6 +111,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconFolder',
|
||||
defaultValue: null,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
parentFolderId: string | null;
|
||||
|
||||
@@ -116,6 +123,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconHash',
|
||||
defaultValue: null,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
externalId: string | null;
|
||||
|
||||
@@ -141,6 +149,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageFolderPendingSyncAction.NONE}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
pendingSyncAction: MessageFolderPendingSyncAction;
|
||||
|
||||
@WorkspaceJoinColumn('messageChannel')
|
||||
|
||||
+7
@@ -12,6 +12,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -70,6 +71,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${MessageParticipantRole.FROM}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
role: MessageParticipantRole;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -79,6 +81,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Handle`,
|
||||
icon: 'IconAt',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
handle: string | null;
|
||||
|
||||
@@ -89,6 +92,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Display Name`,
|
||||
icon: 'IconUser',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
displayName: string | null;
|
||||
|
||||
@@ -102,6 +106,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'messageParticipants',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
message: Relation<MessageWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('message')
|
||||
@@ -117,6 +122,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'messageParticipants',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
person: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -133,6 +139,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'messageParticipants',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workspaceMember: Relation<WorkspaceMemberWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+2
@@ -7,6 +7,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -36,6 +37,7 @@ export class MessageThreadWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => MessageWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messages: Relation<MessageWorkspaceEntity[]>;
|
||||
}
|
||||
|
||||
+8
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -39,6 +40,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Message id from the message header`,
|
||||
icon: 'IconHash',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
headerMessageId: string | null;
|
||||
|
||||
@@ -49,6 +51,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Subject`,
|
||||
icon: 'IconMessage',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
subject: string | null;
|
||||
|
||||
@@ -59,6 +62,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Text`,
|
||||
icon: 'IconMessage',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
text: string | null;
|
||||
|
||||
@@ -69,6 +73,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`The date the message was received`,
|
||||
icon: 'IconCalendar',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
receivedAt: Date | null;
|
||||
|
||||
@@ -82,6 +87,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'messages',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageThread: Relation<MessageThreadWorkspaceEntity> | null;
|
||||
|
||||
@@ -97,6 +103,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => MessageParticipantWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageParticipants: Relation<MessageParticipantWorkspaceEntity[]>;
|
||||
|
||||
@@ -109,6 +116,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
messageChannelMessageAssociations: Relation<
|
||||
MessageChannelMessageAssociationWorkspaceEntity[]
|
||||
|
||||
+5
@@ -9,6 +9,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
||||
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
@@ -41,6 +42,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'noteTargets',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
note: Relation<NoteWorkspaceEntity> | null;
|
||||
|
||||
@@ -57,6 +59,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'noteTargets',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
person: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -73,6 +76,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'noteTargets',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
company: Relation<CompanyWorkspaceEntity> | null;
|
||||
|
||||
@@ -89,6 +93,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'noteTargets',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
opportunity: Relation<OpportunityWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+5
@@ -9,6 +9,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
||||
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
@@ -41,6 +42,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'taskTargets',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
task: Relation<TaskWorkspaceEntity> | null;
|
||||
|
||||
@@ -57,6 +59,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'taskTargets',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
person: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -73,6 +76,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'taskTargets',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
company: Relation<CompanyWorkspaceEntity> | null;
|
||||
|
||||
@@ -89,6 +93,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'taskTargets',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
opportunity: Relation<OpportunityWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
export const SYSTEM_OBJECTS_WITH_TIMELINE_ACTIVITIES = [
|
||||
'noteTarget',
|
||||
'taskTarget',
|
||||
];
|
||||
+4
-2
@@ -8,6 +8,7 @@ import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queu
|
||||
import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager';
|
||||
import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util';
|
||||
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event-batch.type';
|
||||
import { SYSTEM_OBJECTS_WITH_TIMELINE_ACTIVITIES } from 'src/modules/timeline/constants/system-objects-with-timeline-activities.constant';
|
||||
import { TimelineActivityService } from 'src/modules/timeline/services/timeline-activity.service';
|
||||
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
||||
|
||||
@@ -28,8 +29,9 @@ export class UpsertTimelineActivityFromInternalEvent {
|
||||
|
||||
if (
|
||||
workspaceEventBatch.objectMetadata.isSystem &&
|
||||
workspaceEventBatch.objectMetadata.nameSingular !== 'noteTarget' &&
|
||||
workspaceEventBatch.objectMetadata.nameSingular !== 'taskTarget'
|
||||
!SYSTEM_OBJECTS_WITH_TIMELINE_ACTIVITIES.includes(
|
||||
workspaceEventBatch.objectMetadata.nameSingular,
|
||||
)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
+17
@@ -11,6 +11,7 @@ import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-en
|
||||
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -50,6 +51,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconCalendar',
|
||||
defaultValue: 'now',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
happensAt: Date;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -59,6 +61,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Event name`,
|
||||
icon: 'IconAbc',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
name: string | null;
|
||||
|
||||
@@ -69,6 +72,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Json value for event details`,
|
||||
icon: 'IconListDetails',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
properties: JSON | null;
|
||||
|
||||
@@ -80,6 +84,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Cached record name`,
|
||||
icon: 'IconAbc',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
linkedRecordCachedName: string | null;
|
||||
|
||||
@@ -90,6 +95,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Linked Record id`,
|
||||
icon: 'IconAbc',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
linkedRecordId: string | null;
|
||||
|
||||
@@ -100,6 +106,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Linked Object Metadata Id`,
|
||||
icon: 'IconAbc',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
linkedObjectMetadataId: string | null;
|
||||
|
||||
@@ -114,6 +121,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'timelineActivities',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workspaceMember: Relation<WorkspaceMemberWorkspaceEntity> | null;
|
||||
|
||||
@@ -132,6 +140,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetPerson: Relation<PersonWorkspaceEntity> | null;
|
||||
|
||||
@@ -150,6 +159,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetCompany: Relation<CompanyWorkspaceEntity> | null;
|
||||
|
||||
@@ -168,6 +178,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetOpportunity: Relation<OpportunityWorkspaceEntity> | null;
|
||||
|
||||
@@ -186,6 +197,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetNote: Relation<NoteWorkspaceEntity> | null;
|
||||
|
||||
@@ -204,6 +216,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetTask: Relation<TaskWorkspaceEntity> | null;
|
||||
|
||||
@@ -222,6 +235,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetWorkflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||
|
||||
@@ -240,6 +254,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetWorkflowVersion: Relation<WorkflowVersionWorkspaceEntity> | null;
|
||||
|
||||
@@ -258,6 +273,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetWorkflowRun: Relation<WorkflowRunWorkspaceEntity> | null;
|
||||
|
||||
@@ -276,6 +292,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
isMorphRelation: true,
|
||||
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
targetDashboard: Relation<DashboardWorkspaceEntity> | null;
|
||||
|
||||
|
||||
+4
@@ -8,6 +8,7 @@ import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfa
|
||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||
@@ -53,6 +54,7 @@ export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity
|
||||
},
|
||||
],
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
type: AutomatedTriggerType;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -61,6 +63,7 @@ export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity
|
||||
label: msg`Settings`,
|
||||
description: msg`The workflow automated trigger settings`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
settings: AutomatedTriggerSettings;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -73,6 +76,7 @@ export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity
|
||||
inverseSideFieldKey: 'automatedTriggers',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
workflow: Relation<WorkflowWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('workflow')
|
||||
|
||||
+14
-2
@@ -18,9 +18,9 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.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';
|
||||
import { WorkspaceIsObjectUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||
@@ -94,7 +94,6 @@ export const SEARCH_FIELDS_FOR_WORKFLOW_RUNS: FieldTypeAndNameMetadata[] = [
|
||||
})
|
||||
@WorkspaceIsSystem()
|
||||
@WorkspaceIsNotAuditLogged()
|
||||
@WorkspaceIsObjectUIReadOnly()
|
||||
export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
@WorkspaceField({
|
||||
standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
||||
@@ -103,6 +102,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Name of the workflow run`,
|
||||
icon: 'IconSettingsAutomation',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
name: string | null;
|
||||
|
||||
@@ -113,6 +113,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Workflow run enqueued at`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
enqueuedAt: Date | null;
|
||||
|
||||
@@ -123,6 +124,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Workflow run started at`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
startedAt: string | null;
|
||||
|
||||
@@ -133,6 +135,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Workflow run ended at`,
|
||||
icon: 'IconHistory',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
endedAt: string | null;
|
||||
|
||||
@@ -188,6 +191,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: "'NOT_STARTED'",
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
status: WorkflowRunStatus;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -197,6 +201,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconCreativeCommonsSa',
|
||||
description: msg`The executor of the workflow`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
createdBy: ActorMetadata;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -206,6 +211,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`State of the workflow run`,
|
||||
icon: 'IconHierarchy2',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
state: WorkflowRunState;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -216,6 +222,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconHierarchy2',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
position: number;
|
||||
|
||||
@@ -230,6 +237,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
SEARCH_FIELDS_FOR_WORKFLOW_RUNS,
|
||||
),
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsSystem()
|
||||
@WorkspaceFieldIndex({ indexType: IndexType.GIN })
|
||||
@@ -246,6 +254,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'runs',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
workflowVersion: Relation<WorkflowVersionWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('workflowVersion')
|
||||
@@ -261,6 +270,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'runs',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
workflow: Relation<WorkflowWorkspaceEntity>;
|
||||
|
||||
@WorkspaceJoinColumn('workflow')
|
||||
@@ -275,6 +285,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => FavoriteWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
favorites: Relation<FavoriteWorkspaceEntity[]>;
|
||||
|
||||
@@ -287,6 +298,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'targetWorkflowRun',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
timelineActivities: Relation<TimelineActivityWorkspaceEntity[]>;
|
||||
}
|
||||
|
||||
+11
-2
@@ -12,8 +12,8 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
|
||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||
import { WorkspaceIsObjectUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||
@@ -81,7 +81,6 @@ export const SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS: FieldTypeAndNameMetadata[] = [
|
||||
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
||||
})
|
||||
@WorkspaceIsSystem()
|
||||
@WorkspaceIsObjectUIReadOnly()
|
||||
export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
@WorkspaceField({
|
||||
standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
||||
@@ -90,6 +89,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`The workflow version name`,
|
||||
icon: 'IconSettingsAutomation',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
name: string | null;
|
||||
|
||||
@@ -100,6 +100,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Json object to provide trigger`,
|
||||
icon: 'IconSettingsAutomation',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
trigger: WorkflowTrigger | null;
|
||||
|
||||
@@ -110,6 +111,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Json object to provide steps`,
|
||||
icon: 'IconSettingsAutomation',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
steps: WorkflowAction[] | null;
|
||||
|
||||
@@ -122,6 +124,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
options: WorkflowVersionStatusOptions,
|
||||
defaultValue: "'DRAFT'",
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
status: WorkflowVersionStatus;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -132,6 +135,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconHierarchy2',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
position: number;
|
||||
|
||||
@@ -146,6 +150,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS,
|
||||
),
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsSystem()
|
||||
@WorkspaceFieldIndex({ indexType: IndexType.GIN })
|
||||
@@ -162,6 +167,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'versions',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
workflow: Relation<WorkflowWorkspaceEntity>;
|
||||
|
||||
@@ -177,6 +183,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => WorkflowRunWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
runs: Relation<WorkflowRunWorkspaceEntity>;
|
||||
|
||||
@@ -189,6 +196,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => FavoriteWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
favorites: Relation<FavoriteWorkspaceEntity[]>;
|
||||
|
||||
@@ -201,6 +209,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'targetWorkflowVersion',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
timelineActivities: Relation<TimelineActivityWorkspaceEntity[]>;
|
||||
}
|
||||
|
||||
+23
@@ -19,6 +19,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
|
||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||
import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator';
|
||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||
import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
|
||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||
import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator';
|
||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||
@@ -107,6 +108,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconHierarchy2',
|
||||
defaultValue: 0,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
position: number;
|
||||
|
||||
@@ -117,6 +119,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Workspace member name`,
|
||||
icon: 'IconCircleUser',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
name: FullNameMetadata;
|
||||
|
||||
@WorkspaceField({
|
||||
@@ -127,6 +130,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconColorSwatch',
|
||||
defaultValue: "'System'",
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
colorScheme: string;
|
||||
|
||||
@@ -138,6 +142,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
icon: 'IconLanguage',
|
||||
defaultValue: `'${SOURCE_LOCALE}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
locale: keyof typeof APP_LOCALES;
|
||||
|
||||
@@ -148,6 +153,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Workspace member avatar`,
|
||||
icon: 'IconFileUpload',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsSystem()
|
||||
avatarUrl: string | null;
|
||||
@@ -160,6 +166,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Related user email address`,
|
||||
icon: 'IconMail',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsSystem()
|
||||
userEmail: string | null;
|
||||
@@ -174,6 +181,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
dataType: NumberDataType.INT,
|
||||
},
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
calendarStartDay: number;
|
||||
|
||||
@@ -184,6 +192,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`Associated User Id`,
|
||||
icon: 'IconCircleUsers',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
userId: string;
|
||||
|
||||
@@ -195,6 +204,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
description: msg`User time zone`,
|
||||
icon: 'IconTimezone',
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
timeZone: string;
|
||||
|
||||
@@ -232,6 +242,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
dateFormat: string;
|
||||
|
||||
@@ -263,6 +274,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
timeFormat: string;
|
||||
|
||||
@@ -277,6 +289,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'assignee',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
assignedTasks: Relation<TaskWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -289,6 +302,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'forWorkspaceMember',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
favorites: Relation<FavoriteWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -301,6 +315,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'accountOwner',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
accountOwnerForCompanies: Relation<CompanyWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -313,6 +328,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'author',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
authoredAttachments: Relation<AttachmentWorkspaceEntity[]>;
|
||||
|
||||
@@ -326,6 +342,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'accountOwner',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
connectedAccounts: Relation<ConnectedAccountWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -338,6 +355,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'workspaceMember',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
messageParticipants: Relation<MessageParticipantWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -350,6 +368,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'workspaceMember',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
blocklist: Relation<BlocklistWorkspaceEntity[]>;
|
||||
|
||||
@WorkspaceRelation({
|
||||
@@ -362,6 +381,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideFieldKey: 'workspaceMember',
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
calendarEventParticipants: Relation<
|
||||
CalendarEventParticipantWorkspaceEntity[]
|
||||
>;
|
||||
@@ -375,6 +395,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
inverseSideTarget: () => TimelineActivityWorkspaceEntity,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsSystem()
|
||||
timelineActivities: Relation<TimelineActivityWorkspaceEntity[]>;
|
||||
@@ -390,6 +411,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
SEARCH_FIELDS_FOR_WORKSPACE_MEMBER,
|
||||
),
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsNullable()
|
||||
@WorkspaceIsSystem()
|
||||
@WorkspaceFieldIndex({ indexType: IndexType.GIN })
|
||||
@@ -435,6 +457,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
||||
],
|
||||
defaultValue: `'${WorkspaceMemberNumberFormatEnum.SYSTEM}'`,
|
||||
})
|
||||
@WorkspaceIsFieldUIReadOnly()
|
||||
@WorkspaceIsSystem()
|
||||
numberFormat: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user