From e8d4f11d8e04eb798945a84d434e268ae15eb55f Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Tue, 9 Dec 2025 14:52:25 +0100 Subject: [PATCH] Standard index as code introduction + type refactor (#16426) # Introduction Related https://github.com/twentyhq/core-team-issues/issues/1995 In this PR we're introducing the standard index tools for their declaration Also adding a common typing in order to have a simily consistency across standard builders Will implement remaining standard index builder in an other PR --- ...ty-standard-workspace-migration.command.ts | 9 +- .../utils/generate-flat-index.util.ts | 2 +- .../constants/standard-object.constant.ts | 287 ++++++++ .../all-standard-object-index-name.type.ts | 5 + .../metadata-standard-buillder-args.type.ts | 10 + ...-standard-flat-field-metadata-maps.util.ts | 106 ++- ...hment-standard-flat-field-metadata.util.ts | 174 +++-- ...klist-standard-flat-field-metadata.util.ts | 70 +- ...ation-standard-flat-field-metadata.util.ts | 86 ++- ...annel-standard-flat-field-metadata.util.ts | 155 +++-- ...ipant-standard-flat-field-metadata.util.ts | 110 +-- ...event-standard-flat-field-metadata.util.ts | 166 +++-- ...mpany-standard-flat-field-metadata.util.ts | 214 +++--- ...count-standard-flat-field-metadata.util.ts | 155 +++-- ...board-standard-flat-field-metadata.util.ts | 118 ++-- ...older-standard-flat-field-metadata.util.ts | 75 +- ...orite-standard-flat-field-metadata.util.ts | 166 +++-- ...ation-standard-flat-field-metadata.util.ts | 102 +-- ...annel-standard-flat-field-metadata.util.ts | 203 +++--- ...older-standard-flat-field-metadata.util.ts | 118 ++-- ...ipant-standard-flat-field-metadata.util.ts | 99 +-- ...ssage-standard-flat-field-metadata.util.ts | 118 ++-- ...hread-standard-flat-field-metadata.util.ts | 70 +- ...-note-standard-flat-field-metadata.util.ts | 134 ++-- ...arget-standard-flat-field-metadata.util.ts | 94 ++- ...unity-standard-flat-field-metadata.util.ts | 166 +++-- ...erson-standard-flat-field-metadata.util.ts | 230 ++++--- ...-task-standard-flat-field-metadata.util.ts | 158 +++-- ...arget-standard-flat-field-metadata.util.ts | 94 ++- ...ivity-standard-flat-field-metadata.util.ts | 187 +++-- ...igger-standard-flat-field-metadata.util.ts | 78 ++- ...w-run-standard-flat-field-metadata.util.ts | 174 +++-- ...kflow-standard-flat-field-metadata.util.ts | 158 +++-- ...rsion-standard-flat-field-metadata.util.ts | 131 ++-- ...ember-standard-flat-field-metadata.util.ts | 227 +++--- ...reate-standard-field-flat-metadata.util.ts | 65 +- ...ndard-relation-field-flat-metadata.util.ts | 34 +- ...-standard-flat-index-metadata-maps.util.ts | 80 +++ ...mpany-standard-flat-index-metadata.util.ts | 58 ++ ...reate-standard-index-flat-metadata.util.ts | 106 +++ ...standard-flat-object-metadata-maps.util.ts | 8 +- ...eate-standard-flat-object-metadata.util.ts | 651 +++++++++++++----- ...eate-standard-object-flat-metadata.util.ts | 63 +- ...plication-all-flat-entity-maps.constant.ts | 60 +- 44 files changed, 3673 insertions(+), 1901 deletions(-) create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-index-name.type.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type.ts rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/build-standard-flat-field-metadata-maps.util.ts (54%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-attachment-standard-flat-field-metadata.util.ts (80%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-blocklist-standard-flat-field-metadata.util.ts (73%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts (75%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-calendar-channel-standard-flat-field-metadata.util.ts (81%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-calendar-event-participant-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-calendar-event-standard-flat-field-metadata.util.ts (74%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-company-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-connected-account-standard-flat-field-metadata.util.ts (76%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-dashboard-standard-flat-field-metadata.util.ts (75%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-favorite-folder-standard-flat-field-metadata.util.ts (74%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-favorite-standard-flat-field-metadata.util.ts (79%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-message-channel-message-association-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-message-channel-standard-flat-field-metadata.util.ts (82%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-message-folder-standard-flat-field-metadata.util.ts (74%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-message-participant-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-message-standard-flat-field-metadata.util.ts (75%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-message-thread-standard-flat-field-metadata.util.ts (72%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-note-standard-flat-field-metadata.util.ts (75%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-note-target-standard-flat-field-metadata.util.ts (76%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-opportunity-standard-flat-field-metadata.util.ts (78%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-person-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-task-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-task-target-standard-flat-field-metadata.util.ts (76%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-timeline-activity-standard-flat-field-metadata.util.ts (79%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts (75%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-workflow-run-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-workflow-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-workflow-version-standard-flat-field-metadata.util.ts (77%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/compute-workspace-member-standard-flat-field-metadata.util.ts (80%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/create-standard-field-flat-metadata.util.ts (63%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => field-metadata}/create-standard-relation-field-flat-metadata.util.ts (79%) create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/build-standard-flat-index-metadata-maps.util.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/compute-company-standard-flat-index-metadata.util.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => object-metadata}/build-standard-flat-object-metadata-maps.util.ts (75%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => object-metadata}/create-standard-flat-object-metadata.util.ts (54%) rename packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/{ => object-metadata}/create-standard-object-flat-metadata.util.ts (56%) diff --git a/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts b/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts index 93defc7bcf..8bf85c52c9 100644 --- a/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts +++ b/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts @@ -30,10 +30,12 @@ export class ComputeTwentyStandardWorkspaceMigrationCommand extends CommandRunne // TODO: Implement migration logic here const workspaceId = '20202020-ef6f-4118-953c-2b027324b54a'; + const twentyStandardApplicationId = '20202020-5adb-4091-81b7-d5be86a8bdd2'; const twentyStandardAllFlatEntityMaps = computeTwentyStandardApplicationAllFlatEntityMaps({ - createdAt: new Date(), + now: new Date(), workspaceId, + twentyStandardApplicationId, }); writeFileSync( @@ -48,6 +50,7 @@ export class ComputeTwentyStandardWorkspaceMigrationCommand extends CommandRunne isSystemBuild: true, }, fromToAllFlatEntityMaps: { + // Should be dynamic flatObjectMetadataMaps: { from: createEmptyFlatEntityMaps(), to: twentyStandardAllFlatEntityMaps.flatObjectMetadataMaps, @@ -56,6 +59,10 @@ export class ComputeTwentyStandardWorkspaceMigrationCommand extends CommandRunne from: createEmptyFlatEntityMaps(), to: twentyStandardAllFlatEntityMaps.flatFieldMetadataMaps, }, + flatIndexMaps: { + from: createEmptyFlatEntityMaps(), + to: twentyStandardAllFlatEntityMaps.flatIndexMaps, + }, }, workspaceId, }) diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts index c74a6d506a..4d595ea8f5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts @@ -10,7 +10,7 @@ import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-m import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; import { generateDeterministicIndexNameV2 } from 'src/engine/metadata-modules/index-metadata/utils/generate-deterministic-index-name-v2'; -type GenerateFlatIndexArgs = { +export type GenerateFlatIndexArgs = { flatObjectMetadata: FlatObjectMetadata; objectFlatFieldMetadatas: FlatFieldMetadata[]; flatIndex: Omit; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts index d05a1e327a..f952fe846d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts @@ -70,6 +70,32 @@ export const STANDARD_OBJECTS = { workflow: { universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.workflow }, custom: { universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.custom }, }, + indexes: { + authorIdIndex: { + universalIdentifier: 'a7c3e8f2-9b14-4d6a-8e5f-1c2d3b4a5e6f', + }, + taskIdIndex: { + universalIdentifier: 'b8d4f9a3-0c25-4e7b-9f6a-2d3e4c5b6f70', + }, + noteIdIndex: { + universalIdentifier: 'c9e5a0b4-1d36-4f8c-0a7b-3e4f5d6c7a81', + }, + personIdIndex: { + universalIdentifier: 'd0f6b1c5-2e47-4a9d-1b8c-4f5a6e7d8b92', + }, + companyIdIndex: { + universalIdentifier: 'e1a7c2d6-3f58-4b0e-2c9d-5a6b7f8e9c03', + }, + opportunityIdIndex: { + universalIdentifier: 'f2b8d3e7-4a69-4c1f-3d0e-6b7c8a9f0d14', + }, + dashboardIdIndex: { + universalIdentifier: '03c9e4f8-5b70-4d2a-4e1f-7c8d9b0a1e25', + }, + workflowIdIndex: { + universalIdentifier: '14d0f5a9-6c81-4e3b-5f2a-8d9e0c1b2f36', + }, + }, views: {}, }, blocklist: { @@ -90,6 +116,11 @@ export const STANDARD_OBJECTS = { universalIdentifier: BLOCKLIST_STANDARD_FIELD_IDS.workspaceMember, }, }, + indexes: { + workspaceMemberIdIndex: { + universalIdentifier: '25e1a6b0-7d92-4f4c-6a3b-9e0f1d2c3a47', + }, + }, views: {}, }, calendarChannelEventAssociation: { @@ -124,6 +155,14 @@ export const STANDARD_OBJECTS = { CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS.recurringEventExternalId, }, }, + indexes: { + calendarChannelIdIndex: { + universalIdentifier: '36f2b7c1-8e03-4a5d-7b4c-0f1a2e3d4b58', + }, + calendarEventIdIndex: { + universalIdentifier: '47a3c8d2-9f14-4b6e-8c5d-1a2b3f4e5c69', + }, + }, views: {}, }, calendarChannel: { @@ -185,6 +224,11 @@ export const STANDARD_OBJECTS = { universalIdentifier: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.syncedAt, }, }, + indexes: { + connectedAccountIdIndex: { + universalIdentifier: '58b4d9e3-0a25-4c7f-9d6e-2b3c4a5f6d70', + }, + }, views: {}, }, calendarEventParticipant: { @@ -231,6 +275,17 @@ export const STANDARD_OBJECTS = { CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.workspaceMember, }, }, + indexes: { + calendarEventIdIndex: { + universalIdentifier: '69c5e0f4-1b36-4d8a-0e7f-3c4d5b6a7e81', + }, + personIdIndex: { + universalIdentifier: '70d6f1a5-2c47-4e9b-1f8a-4d5e6c7b8f92', + }, + workspaceMemberIdIndex: { + universalIdentifier: '81e7a2b6-3d58-4f0c-2a9b-5e6f7d8c9003', + }, + }, views: {}, }, calendarEvent: { @@ -290,6 +345,7 @@ export const STANDARD_OBJECTS = { CALENDAR_EVENT_STANDARD_FIELD_IDS.calendarEventParticipants, }, }, + indexes: {}, views: { allCalendarEvents: { universalIdentifier: '20202020-c001-4c01-8c01-ca1ebe0ca001', @@ -380,6 +436,17 @@ export const STANDARD_OBJECTS = { universalIdentifier: COMPANY_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + accountOwnerIdIndex: { + universalIdentifier: '92f8b3c7-4e69-4a1d-3b0c-6f7a8e9d0114', + }, + domainNameUniqueIndex: { + universalIdentifier: 'a3a9c4d8-5f70-4b2e-4c1d-7a8b9f0e1225', + }, + searchVectorGinIndex: { + universalIdentifier: 'b4b0d5e9-6a81-4c3f-5d2e-8b9c0a1f2336', + }, + }, views: { allCompanies: { universalIdentifier: '20202020-a001-4a01-8a01-c0aba11c0001', @@ -470,6 +537,11 @@ export const STANDARD_OBJECTS = { CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.connectionParameters, }, }, + indexes: { + accountOwnerIdIndex: { + universalIdentifier: 'c5c1e6f0-7b92-4d4a-6e3f-9c0d1b2a3447', + }, + }, views: {}, }, dashboard: { @@ -506,6 +578,11 @@ export const STANDARD_OBJECTS = { universalIdentifier: DASHBOARD_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + searchVectorGinIndex: { + universalIdentifier: 'd6d2f7a1-8c03-4e5b-7f4a-0d1e2c3b4558', + }, + }, views: { allDashboards: { universalIdentifier: '20202020-a012-4a12-8a12-da5ab0b0a001', @@ -564,6 +641,41 @@ export const STANDARD_OBJECTS = { }, dashboard: { universalIdentifier: FAVORITE_STANDARD_FIELD_IDS.dashboard }, }, + indexes: { + forWorkspaceMemberIdIndex: { + universalIdentifier: 'e7e3a8b2-9d14-4f6c-8a5b-1e2f3d4c5669', + }, + personIdIndex: { + universalIdentifier: 'f8f4b9c3-0e25-4a7d-9b6c-2f3a4e5d677a', + }, + companyIdIndex: { + universalIdentifier: '0905c0d4-1f36-4b8e-0c7d-3a4b5f6e788b', + }, + favoriteFolderIdIndex: { + universalIdentifier: '1016d1e5-2a47-4c9f-1d8e-4b5c6a7f899c', + }, + opportunityIdIndex: { + universalIdentifier: '2127e2f6-3b58-4d0a-2e9f-5c6d7b80900d', + }, + workflowIdIndex: { + universalIdentifier: '3238f3a7-4c69-4e1b-3f0a-6d7e8c91011e', + }, + workflowVersionIdIndex: { + universalIdentifier: '4349a4b8-5d70-4f2c-4a1b-7e8f9d02122f', + }, + workflowRunIdIndex: { + universalIdentifier: '5450b5c9-6e81-4a3d-5b2c-8f90ae132340', + }, + taskIdIndex: { + universalIdentifier: '6561c6d0-7f92-4b4e-6c3d-90a1bf243451', + }, + noteIdIndex: { + universalIdentifier: '7672d7e1-8003-4c5f-7d4e-01b2c0354562', + }, + dashboardIdIndex: { + universalIdentifier: '8783e8f2-9114-4d6a-8e5f-12c3d1465673', + }, + }, views: {}, }, favoriteFolder: { @@ -587,6 +699,7 @@ export const STANDARD_OBJECTS = { universalIdentifier: FAVORITE_FOLDER_STANDARD_FIELD_IDS.favorites, }, }, + indexes: {}, views: {}, }, messageChannelMessageAssociation: { @@ -628,6 +741,17 @@ export const STANDARD_OBJECTS = { universalIdentifier: '75c9b0f7-9e76-44d4-a2f9-47051e61eec7', }, }, + indexes: { + messageChannelIdIndex: { + universalIdentifier: '9894f9a3-0225-4e7b-9f6a-23d4e2576784', + }, + messageIdIndex: { + universalIdentifier: '0905a0b4-1336-4f8c-0a7b-34e5f3687895', + }, + messageChannelIdMessageIdUniqueIndex: { + universalIdentifier: '1a16b1c5-2447-4a9d-1b8c-45f6a47989a6', + }, + }, views: {}, }, messageChannel: { @@ -709,6 +833,11 @@ export const STANDARD_OBJECTS = { MESSAGE_CHANNEL_STANDARD_FIELD_IDS.throttleFailureCount, }, }, + indexes: { + connectedAccountIdIndex: { + universalIdentifier: '2b27c2d6-3558-4b0e-2c9d-56a7b58a9ab7', + }, + }, views: {}, }, messageFolder: { @@ -748,6 +877,11 @@ export const STANDARD_OBJECTS = { MESSAGE_FOLDER_STANDARD_FIELD_IDS.pendingSyncAction, }, }, + indexes: { + messageChannelIdIndex: { + universalIdentifier: '3c38d3e7-4669-4c1f-3d0e-67b8c69b0bc8', + }, + }, views: {}, }, messageParticipant: { @@ -783,6 +917,17 @@ export const STANDARD_OBJECTS = { MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.workspaceMember, }, }, + indexes: { + messageIdIndex: { + universalIdentifier: '4d49e4f8-5770-4d2a-4e1f-78c9d70c1cd9', + }, + personIdIndex: { + universalIdentifier: '5e50f5a9-6881-4e3b-5f2a-89d0e81d2de0', + }, + workspaceMemberIdIndex: { + universalIdentifier: '6f61a6b0-7992-4f4c-6a3b-90e1f92e3ef1', + }, + }, views: {}, }, messageThread: { @@ -806,6 +951,7 @@ export const STANDARD_OBJECTS = { MESSAGE_THREAD_STANDARD_FIELD_IDS.messageChannelMessageAssociations, }, }, + indexes: {}, views: { allMessageThreads: { universalIdentifier: '20202020-d002-4d02-8d02-ae55a9ba2002', @@ -855,6 +1001,11 @@ export const STANDARD_OBJECTS = { MESSAGE_STANDARD_FIELD_IDS.messageChannelMessageAssociations, }, }, + indexes: { + messageThreadIdIndex: { + universalIdentifier: '7072b7c1-8003-4a5d-7b4c-01f2a03f4f02', + }, + }, views: { allMessages: { universalIdentifier: '20202020-d001-4d01-8d01-ae55a9e5a001', @@ -912,6 +1063,11 @@ export const STANDARD_OBJECTS = { universalIdentifier: NOTE_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + searchVectorGinIndex: { + universalIdentifier: '8183c8d2-9114-4b6e-8c5d-12a3b14a5a13', + }, + }, views: { allNotes: { universalIdentifier: '20202020-a005-4a05-8a05-a0be5a11a000', @@ -956,6 +1112,20 @@ export const STANDARD_OBJECTS = { }, custom: { universalIdentifier: NOTE_TARGET_STANDARD_FIELD_IDS.custom }, }, + indexes: { + noteIdIndex: { + universalIdentifier: '9294d9e3-0225-4c7f-9d6e-23b4c25b6b24', + }, + personIdIndex: { + universalIdentifier: '0305e0f4-1336-4d8a-0e7f-34c5d36c7c35', + }, + companyIdIndex: { + universalIdentifier: '1416f1a5-2447-4e9b-1f8a-45d6e47d8d46', + }, + opportunityIdIndex: { + universalIdentifier: '2527a2b6-3558-4f0c-2a9b-56e7f58e9e57', + }, + }, views: {}, }, opportunity: { @@ -1006,6 +1176,20 @@ export const STANDARD_OBJECTS = { universalIdentifier: OPPORTUNITY_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + pointOfContactIdIndex: { + universalIdentifier: '3638b3c7-4669-4a1d-3b0c-67f8a69f0f68', + }, + companyIdIndex: { + universalIdentifier: '4749c4d8-5770-4b2e-4c1d-78a9b70a1a79', + }, + stageIndex: { + universalIdentifier: '5850d5e9-6881-4c3f-5d2e-89b0c81b2b80', + }, + searchVectorGinIndex: { + universalIdentifier: '6961e6f0-7992-4d4a-6e3f-90c1d92c3c91', + }, + }, views: { allOpportunities: { universalIdentifier: '20202020-a003-4a03-8a03-0aa0b1ca1ba0', @@ -1128,6 +1312,17 @@ export const STANDARD_OBJECTS = { universalIdentifier: PERSON_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + companyIdIndex: { + universalIdentifier: '7072f7a1-8003-4e5b-7f4a-01d2e03d4d02', + }, + emailsUniqueIndex: { + universalIdentifier: '8183a8b2-9114-4f6c-8a5b-12e3f14e5e13', + }, + searchVectorGinIndex: { + universalIdentifier: '9294b9c3-0225-4a7d-9b6c-23f4a25f6f24', + }, + }, views: { allPeople: { universalIdentifier: '20202020-a002-4a02-8a02-ae0a1ea11a00', @@ -1197,6 +1392,14 @@ export const STANDARD_OBJECTS = { universalIdentifier: TASK_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + assigneeIdIndex: { + universalIdentifier: '0305c0d4-1336-4b8e-0c7d-34a5b36a7a35', + }, + searchVectorGinIndex: { + universalIdentifier: '1416d1e5-2447-4c9f-1d8e-45b6c47b8b46', + }, + }, views: { allTasks: { universalIdentifier: '20202020-a006-4a06-8a06-ba5ca11a1ea0', @@ -1326,6 +1529,20 @@ export const STANDARD_OBJECTS = { }, custom: { universalIdentifier: TASK_TARGET_STANDARD_FIELD_IDS.custom }, }, + indexes: { + taskIdIndex: { + universalIdentifier: '2527e2f6-3558-4d0a-2e9f-56c7d58c9c57', + }, + personIdIndex: { + universalIdentifier: '3638f3a7-4669-4e1b-3f0a-67d8e69d0d68', + }, + companyIdIndex: { + universalIdentifier: '4749a4b8-5770-4f2c-4a1b-78e9f70e1e79', + }, + opportunityIdIndex: { + universalIdentifier: '5850b5c9-6881-4a3d-5b2c-89f0a81f2f80', + }, + }, views: {}, }, timelineActivity: { @@ -1392,6 +1609,38 @@ export const STANDARD_OBJECTS = { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedObjectMetadataId, }, }, + indexes: { + workspaceMemberIdIndex: { + universalIdentifier: '6961c6d0-7992-4b4e-6c3d-90a1b92a3a91', + }, + personIdIndex: { + universalIdentifier: '7072d7e1-8003-4c5f-7d4e-01b2c03b4b02', + }, + companyIdIndex: { + universalIdentifier: '8183e8f2-9114-4d6a-8e5f-12c3d14c5c13', + }, + opportunityIdIndex: { + universalIdentifier: '9294f9a3-0225-4e7b-9f6a-23d4e25d6d24', + }, + noteIdIndex: { + universalIdentifier: '0305a0b4-1336-4f8c-0a7b-34e5f36e7e35', + }, + taskIdIndex: { + universalIdentifier: '1416b1c5-2447-4a9d-1b8c-45f6a47f8f46', + }, + workflowIdIndex: { + universalIdentifier: '2527c2d6-3558-4b0e-2c9d-56a7b58a9a57', + }, + workflowVersionIdIndex: { + universalIdentifier: '3638d3e7-4669-4c1f-3d0e-67b8c69b0b68', + }, + workflowRunIdIndex: { + universalIdentifier: '4749e4f8-5770-4d2a-4e1f-78c9d70c1c79', + }, + dashboardIdIndex: { + universalIdentifier: '5850f5a9-6881-4e3b-5f2a-89d0e81d2d80', + }, + }, views: { allTimelineActivities: { universalIdentifier: '20202020-b101-4b01-8b01-ba5cc01aa001', @@ -1454,6 +1703,11 @@ export const STANDARD_OBJECTS = { universalIdentifier: WORKFLOW_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + searchVectorGinIndex: { + universalIdentifier: '6961a6b0-7992-4f4c-6a3b-90e1f92e3e91', + }, + }, views: { allWorkflows: { universalIdentifier: '20202020-a009-4a09-8a09-a0bcf10aa11a', @@ -1507,6 +1761,11 @@ export const STANDARD_OBJECTS = { WORKFLOW_AUTOMATED_TRIGGER_STANDARD_FIELD_IDS.workflow, }, }, + indexes: { + workflowIdIndex: { + universalIdentifier: '7072b7c1-8003-4a5d-7b4c-01f2a03f4f03', + }, + }, views: {}, }, workflowRun: { @@ -1556,6 +1815,17 @@ export const STANDARD_OBJECTS = { universalIdentifier: WORKFLOW_RUN_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + workflowVersionIdIndex: { + universalIdentifier: '8183c8d2-9114-4b6e-8c5d-12a3b14a5a14', + }, + workflowIdIndex: { + universalIdentifier: '9294d9e3-0225-4c7f-9d6e-23b4c25b6b25', + }, + searchVectorGinIndex: { + universalIdentifier: '0305e0f4-1336-4d8a-0e7f-34c5d36c7c36', + }, + }, views: { allWorkflowRuns: { universalIdentifier: '20202020-a011-4a11-8a11-a0bcf10abca5', @@ -1621,6 +1891,14 @@ export const STANDARD_OBJECTS = { universalIdentifier: WORKFLOW_VERSION_STANDARD_FIELD_IDS.searchVector, }, }, + indexes: { + workflowIdIndex: { + universalIdentifier: '1416f1a5-2447-4e9b-1f8a-45d6e47d8d47', + }, + searchVectorGinIndex: { + universalIdentifier: '2527a2b6-3558-4f0c-2a9b-56e7f58e9e58', + }, + }, views: { allWorkflowVersions: { universalIdentifier: '20202020-a010-4a10-8a10-a0bcf10aae15', @@ -1729,6 +2007,14 @@ export const STANDARD_OBJECTS = { universalIdentifier: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.numberFormat, }, }, + indexes: { + userEmailUniqueIndex: { + universalIdentifier: '3638b3c7-4669-4a1d-3b0c-67f8a69f0f69', + }, + searchVectorGinIndex: { + universalIdentifier: '4749c4d8-5770-4b2e-4c1d-78a9b70a1a7a', + }, + }, views: { allWorkspaceMembers: { universalIdentifier: '20202020-e001-4e01-8e01-a0bcaeabe100', @@ -1769,6 +2055,7 @@ export const STANDARD_OBJECTS = { { universalIdentifier: string; fields: Record; + indexes: Record; views: Record< string, { diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-index-name.type.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-index-name.type.ts new file mode 100644 index 0000000000..c479be79d8 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-index-name.type.ts @@ -0,0 +1,5 @@ +import { type STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; +import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; + +export type AllStandardObjectIndexName = + keyof (typeof STANDARD_OBJECTS)[T]['indexes']; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type.ts new file mode 100644 index 0000000000..2c88e3dfab --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type.ts @@ -0,0 +1,10 @@ +import { type AllMetadataName } from 'twenty-shared/metadata'; + +import { type MetadataValidationRelatedFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-related-types.type'; +import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { type ComputeTwentyStandardApplicationAllFlatEntityMapsArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant'; + +export type StandardBuilderArgs = { + standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; + dependencyFlatEntityMaps: MetadataValidationRelatedFlatEntityMaps; +} & ComputeTwentyStandardApplicationAllFlatEntityMapsArgs; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-field-metadata-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/build-standard-flat-field-metadata-maps.util.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-field-metadata-maps.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/build-standard-flat-field-metadata-maps.util.ts index 97caabd026..0bf2758832 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-field-metadata-maps.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/build-standard-flat-field-metadata-maps.util.ts @@ -2,45 +2,39 @@ import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/typ import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; -import { buildAttachmentStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-attachment-standard-flat-field-metadata.util'; -import { buildBlocklistStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-blocklist-standard-flat-field-metadata.util'; -import { buildCalendarChannelEventAssociationStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-event-association-standard-flat-field-metadata.util'; -import { buildCalendarChannelStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-standard-flat-field-metadata.util'; -import { buildCalendarEventParticipantStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-participant-standard-flat-field-metadata.util'; -import { buildCalendarEventStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-standard-flat-field-metadata.util'; -import { buildCompanyStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-company-standard-flat-field-metadata.util'; -import { buildConnectedAccountStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-connected-account-standard-flat-field-metadata.util'; -import { buildDashboardStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-dashboard-standard-flat-field-metadata.util'; -import { buildFavoriteFolderStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-folder-standard-flat-field-metadata.util'; -import { buildFavoriteStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-standard-flat-field-metadata.util'; -import { buildMessageChannelMessageAssociationStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-message-association-standard-flat-field-metadata.util'; -import { buildMessageChannelStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-standard-flat-field-metadata.util'; -import { buildMessageFolderStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-message-folder-standard-flat-field-metadata.util'; -import { buildMessageParticipantStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-message-participant-standard-flat-field-metadata.util'; -import { buildMessageStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-message-standard-flat-field-metadata.util'; -import { buildMessageThreadStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-message-thread-standard-flat-field-metadata.util'; -import { buildNoteStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-note-standard-flat-field-metadata.util'; -import { buildNoteTargetStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-note-target-standard-flat-field-metadata.util'; -import { buildOpportunityStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-opportunity-standard-flat-field-metadata.util'; -import { buildPersonStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-person-standard-flat-field-metadata.util'; -import { buildTaskStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-task-standard-flat-field-metadata.util'; -import { buildTaskTargetStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-task-target-standard-flat-field-metadata.util'; -import { buildTimelineActivityStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-timeline-activity-standard-flat-field-metadata.util'; -import { buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-automated-trigger-standard-flat-field-metadata.util'; -import { buildWorkflowRunStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-run-standard-flat-field-metadata.util'; -import { buildWorkflowStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-standard-flat-field-metadata.util'; -import { buildWorkflowVersionStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-version-standard-flat-field-metadata.util'; -import { buildWorkspaceMemberStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/compute-workspace-member-standard-flat-field-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { buildAttachmentStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util'; +import { buildBlocklistStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util'; +import { buildCalendarChannelEventAssociationStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util'; +import { buildCalendarChannelStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util'; +import { buildCalendarEventParticipantStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util'; +import { buildCalendarEventStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util'; +import { buildCompanyStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util'; +import { buildConnectedAccountStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util'; +import { buildDashboardStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util'; +import { buildFavoriteFolderStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util'; +import { buildFavoriteStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util'; +import { buildMessageChannelMessageAssociationStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util'; +import { buildMessageChannelStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util'; +import { buildMessageFolderStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util'; +import { buildMessageParticipantStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util'; +import { buildMessageStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util'; +import { buildMessageThreadStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util'; +import { buildNoteStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util'; +import { buildNoteTargetStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util'; +import { buildOpportunityStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util'; +import { buildPersonStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util'; +import { buildTaskStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util'; +import { buildTaskTargetStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util'; +import { buildTimelineActivityStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util'; +import { buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util'; +import { buildWorkflowRunStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util'; +import { buildWorkflowStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util'; +import { buildWorkflowVersionStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util'; +import { buildWorkspaceMemberStandardFlatFieldMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util'; +import { type CreateStandardFieldArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; -type BuildStandardFlatFieldMetadataMapsArgs = { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}; - -type StandardFlatFieldMetadataBuilder = ( - args: BuildStandardFlatFieldMetadataMapsArgs, +type StandardFieldBuilder

= ( + args: Omit, 'context'>, ) => Record; const STANDARD_FLAT_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME = { @@ -77,7 +71,9 @@ const STANDARD_FLAT_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME = { workflowRun: buildWorkflowRunStandardFlatFieldMetadatas, workflowVersion: buildWorkflowVersionStandardFlatFieldMetadatas, workspaceMember: buildWorkspaceMemberStandardFlatFieldMetadatas, -} satisfies Record; +} satisfies { + [P in AllStandardObjectName]: StandardFieldBuilder

; +}; const createEmptyFlatFieldMetadataMaps = (): FlatEntityMaps => ({ @@ -86,23 +82,25 @@ const createEmptyFlatFieldMetadataMaps = universalIdentifiersByApplicationId: {}, }); -export const buildStandardFlatFieldMetadataMaps = ({ - createdAt, - workspaceId, - standardFieldMetadataIdByObjectAndFieldName, -}: BuildStandardFlatFieldMetadataMapsArgs): FlatEntityMaps => { - const builderArgs = { - createdAt, - workspaceId, - standardFieldMetadataIdByObjectAndFieldName, - }; +export const buildStandardFlatFieldMetadataMaps = ( + args: Omit, +): FlatEntityMaps => { + const allFieldMetadatas: FlatFieldMetadata[] = ( + Object.keys( + STANDARD_FLAT_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME, + ) as (keyof typeof STANDARD_FLAT_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME)[] + ).flatMap((objectName) => { + const builder: StandardFieldBuilder = + STANDARD_FLAT_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME[objectName]; - // Collect all field metadatas from all standard objects - const allFieldMetadatas: FlatFieldMetadata[] = Object.values( - STANDARD_FLAT_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME, - ).flatMap((builder) => Object.values(builder(builderArgs))); + const result = builder({ + ...args, + objectName, + }); + + return Object.values(result); + }); - // Build maps using addFlatEntityToFlatEntityMapsOrThrow to prevent duplicate IDs let flatFieldMetadataMaps = createEmptyFlatFieldMetadataMaps(); for (const fieldMetadata of allFieldMetadatas) { diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-attachment-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-attachment-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts index 7e5498ce2e..860f44ea0e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-attachment-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildAttachmentStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'attachment'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,58 +99,66 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Attachment-specific fields name: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'Attachment name', icon: 'IconFileUpload', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), fullPath: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'fullPath', type: FieldMetadataType.TEXT, label: 'Full path', description: 'Attachment full path', icon: 'IconLink', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), type: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'type', type: FieldMetadataType.TEXT, label: 'Type (deprecated)', description: 'Attachment type (deprecated - use fileCategory)', icon: 'IconList', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), fileCategory: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'fileCategory', type: FieldMetadataType.SELECT, label: 'File category', @@ -173,14 +191,16 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ { value: 'VIDEO', label: 'Video', position: 6, color: 'purple' }, { value: 'OTHER', label: 'Other', position: 7, color: 'gray' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -188,22 +208,23 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields author: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'author', label: 'Author', description: 'Attachment author (deprecated - use createdBy)', icon: 'IconCircleUser', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'authoredAttachments', settings: { @@ -213,17 +234,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), activity: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'activity', label: 'Activity', description: 'Attachment activity', icon: 'IconNotes', isNullable: true, - createdAt, // Activity is deprecated, pointing to a non-existent target targetObjectName: 'note', targetFieldName: 'attachments', @@ -234,17 +257,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), task: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'task', label: 'Task', description: 'Attachment task', icon: 'IconNotes', isNullable: true, - createdAt, targetObjectName: 'task', targetFieldName: 'attachments', settings: { @@ -254,17 +279,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), note: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'note', label: 'Note', description: 'Attachment note', icon: 'IconNotes', isNullable: true, - createdAt, targetObjectName: 'note', targetFieldName: 'attachments', settings: { @@ -274,17 +301,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'Attachment person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'attachments', settings: { @@ -294,17 +323,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), company: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: 'Attachment company', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'attachments', settings: { @@ -314,17 +345,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), opportunity: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'opportunity', label: 'Opportunity', description: 'Attachment opportunity', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'attachments', settings: { @@ -334,17 +367,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), dashboard: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'dashboard', label: 'Dashboard', description: 'Attachment dashboard', icon: 'IconLayout', isNullable: true, - createdAt, targetObjectName: 'dashboard', targetFieldName: 'attachments', settings: { @@ -354,17 +389,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflow: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'workflow', label: 'Workflow', description: 'Attachment workflow', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, targetObjectName: 'workflow', targetFieldName: 'attachments', settings: { @@ -374,17 +411,19 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), custom: createStandardRelationFieldFlatMetadata({ - objectName: 'attachment', + objectName, workspaceId, - options: { + context: { fieldName: 'custom', label: 'Custom', description: 'Attachment custom object', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, // Custom is a dynamic relation, pointing to custom objects targetObjectName: 'note', targetFieldName: 'attachments', @@ -395,5 +434,8 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-blocklist-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts similarity index 73% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-blocklist-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts index 93afcb0369..8f6e52f836 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-blocklist-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildBlocklistStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'blocklist'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'blocklist', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'blocklist', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'blocklist', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'blocklist', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,38 +99,41 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Blocklist-specific fields handle: createStandardFieldFlatMetadata({ - objectName: 'blocklist', + objectName, workspaceId, - options: { + context: { fieldName: 'handle', type: FieldMetadataType.TEXT, label: 'Handle', description: 'Handle', icon: 'IconAt', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields workspaceMember: createStandardRelationFieldFlatMetadata({ - objectName: 'blocklist', + objectName, workspaceId, - options: { + context: { fieldName: 'workspaceMember', label: 'WorkspaceMember', description: 'WorkspaceMember', icon: 'IconCircleUser', isNullable: false, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'blocklist', settings: { @@ -130,5 +143,8 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts index f196f40c53..35f4892f5a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts @@ -6,26 +6,30 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit< + CreateStandardFieldArgs<'calendarChannelEventAssociation'>, + 'context' +>): Record< AllStandardObjectFieldName<'calendarChannelEventAssociation'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -35,14 +39,16 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -69,14 +77,16 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,48 +95,53 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), eventExternalId: createStandardFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'eventExternalId', type: FieldMetadataType.TEXT, label: 'Event external ID', description: 'Event external ID', icon: 'IconCalendar', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), recurringEventExternalId: createStandardFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'recurringEventExternalId', type: FieldMetadataType.TEXT, label: 'Recurring Event ID', description: 'Recurring Event ID', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarChannel: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarChannel', label: 'Channel ID', description: 'Channel ID', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarChannel', targetFieldName: 'calendarChannelEventAssociations', settings: { @@ -136,17 +151,19 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarEvent: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarChannelEventAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarEvent', label: 'Event ID', description: 'Event ID', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarEvent', targetFieldName: 'calendarChannelEventAssociations', settings: { @@ -156,5 +173,8 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts similarity index 81% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts index 00d6b16c68..1a8a78265f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-channel-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts @@ -6,26 +6,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildCalendarChannelStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'calendarChannel'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -35,14 +36,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +55,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -69,14 +74,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,28 +92,32 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), handle: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'handle', type: FieldMetadataType.TEXT, label: 'Handle', description: 'Handle', icon: 'IconAt', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), visibility: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'visibility', type: FieldMetadataType.SELECT, label: 'Visibility', @@ -123,14 +134,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ color: 'orange', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isContactAutoCreationEnabled: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'isContactAutoCreationEnabled', type: FieldMetadataType.BOOLEAN, label: 'Is Contact Auto Creation Enabled', @@ -138,14 +151,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ icon: 'IconUserCircle', isNullable: false, defaultValue: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), contactAutoCreationPolicy: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'contactAutoCreationPolicy', type: FieldMetadataType.SELECT, label: 'Contact auto creation policy', @@ -175,14 +190,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ }, { value: 'NONE', label: 'None', color: 'red', position: 3 }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isSyncEnabled: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'isSyncEnabled', type: FieldMetadataType.BOOLEAN, label: 'Is Sync Enabled', @@ -190,14 +207,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ icon: 'IconRefresh', isNullable: false, defaultValue: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncCursor: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncCursor', type: FieldMetadataType.TEXT, label: 'Sync Cursor', @@ -205,14 +224,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ 'Sync Cursor. Used for syncing events from the calendar provider', icon: 'IconReload', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncStatus: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncStatus', type: FieldMetadataType.SELECT, label: 'Sync status', @@ -241,14 +262,16 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ color: 'red', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncStage: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncStage', type: FieldMetadataType.SELECT, label: 'Sync stage', @@ -301,42 +324,48 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ color: 'gray', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncStageStartedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncStageStartedAt', type: FieldMetadataType.DATE_TIME, label: 'Sync stage started at', description: 'Sync stage started at', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncedAt', type: FieldMetadataType.DATE_TIME, label: 'Last sync date', description: 'Last sync date', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), throttleFailureCount: createStandardFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'throttleFailureCount', type: FieldMetadataType.NUMBER, label: 'Throttle Failure Count', @@ -344,20 +373,21 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ icon: 'IconX', isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), connectedAccount: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'connectedAccount', label: 'Connected Account', description: 'Connected Account', icon: 'IconUserCircle', isNullable: false, - createdAt, targetObjectName: 'connectedAccount', targetFieldName: 'calendarChannels', settings: { @@ -367,17 +397,19 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarChannelEventAssociations: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarChannelEventAssociations', label: 'Calendar Channel Event Associations', description: 'Calendar Channel Event Associations', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarChannelEventAssociation', targetFieldName: 'calendarChannel', settings: { @@ -385,5 +417,8 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-participant-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-participant-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts index 87b0948f35..a29f4c2317 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-participant-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts @@ -6,26 +6,30 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit< + CreateStandardFieldArgs<'calendarEventParticipant'>, + 'context' +>): Record< AllStandardObjectFieldName<'calendarEventParticipant'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -35,14 +39,16 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -69,14 +77,16 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,42 +95,48 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), handle: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'handle', type: FieldMetadataType.TEXT, label: 'Handle', description: 'Handle', icon: 'IconMail', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), displayName: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'displayName', type: FieldMetadataType.TEXT, label: 'Display Name', description: 'Display Name', icon: 'IconUser', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isOrganizer: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'isOrganizer', type: FieldMetadataType.BOOLEAN, label: 'Is Organizer', @@ -128,14 +144,16 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ icon: 'IconUser', isNullable: false, defaultValue: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), responseStatus: createStandardFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'responseStatus', type: FieldMetadataType.SELECT, label: 'Response Status', @@ -159,20 +177,21 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ }, { value: 'ACCEPTED', label: 'Accepted', position: 3, color: 'green' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarEvent: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarEvent', label: 'Event ID', description: 'Event ID', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarEvent', targetFieldName: 'calendarEventParticipants', settings: { @@ -182,17 +201,19 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'Person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'calendarEventParticipants', settings: { @@ -202,17 +223,19 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workspaceMember: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarEventParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'workspaceMember', label: 'Workspace Member', description: 'Workspace Member', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'calendarEventParticipants', settings: { @@ -222,5 +245,8 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts similarity index 74% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts index 3f8d1a5761..425f508a43 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-calendar-event-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts @@ -2,23 +2,27 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildCalendarEventStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'calendarEvent'>, + FlatFieldMetadata +> => ({ id: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -28,14 +32,16 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -45,14 +51,16 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -62,14 +70,16 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -78,28 +88,32 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), title: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'title', type: FieldMetadataType.TEXT, label: 'Title', description: 'Title', icon: 'IconH1', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isCanceled: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'isCanceled', type: FieldMetadataType.BOOLEAN, label: 'Is canceled', @@ -107,14 +121,16 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ icon: 'IconCalendarCancel', isNullable: false, defaultValue: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isFullDay: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'isFullDay', type: FieldMetadataType.BOOLEAN, label: 'Is Full Day', @@ -122,146 +138,165 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ icon: 'IconHours24', isNullable: false, defaultValue: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), startsAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'startsAt', type: FieldMetadataType.DATE_TIME, label: 'Start Date', description: 'Start Date', icon: 'IconCalendarClock', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), endsAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'endsAt', type: FieldMetadataType.DATE_TIME, label: 'End Date', description: 'End Date', icon: 'IconCalendarClock', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), externalCreatedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'externalCreatedAt', type: FieldMetadataType.DATE_TIME, label: 'Creation DateTime', description: 'Creation DateTime', icon: 'IconCalendarPlus', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), externalUpdatedAt: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'externalUpdatedAt', type: FieldMetadataType.DATE_TIME, label: 'Update DateTime', description: 'Update DateTime', icon: 'IconCalendarCog', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), description: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'description', type: FieldMetadataType.TEXT, label: 'Description', description: 'Description', icon: 'IconFileDescription', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), location: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'location', type: FieldMetadataType.TEXT, label: 'Location', description: 'Location', icon: 'IconMapPin', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), iCalUid: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'iCalUid', type: FieldMetadataType.TEXT, label: 'iCal UID', description: 'iCal UID', icon: 'IconKey', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), conferenceSolution: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'conferenceSolution', type: FieldMetadataType.TEXT, label: 'Conference Solution', description: 'Conference Solution', icon: 'IconScreenShare', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), conferenceLink: createStandardFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'conferenceLink', type: FieldMetadataType.LINKS, label: 'Meet Link', description: 'Meet Link', icon: 'IconLink', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarChannelEventAssociations: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarChannelEventAssociations', label: 'Calendar Channel Event Associations', description: 'Calendar Channel Event Associations', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarChannelEventAssociation', targetFieldName: 'calendarEvent', settings: { @@ -269,17 +304,19 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarEventParticipants: createStandardRelationFieldFlatMetadata({ - objectName: 'calendarEvent', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarEventParticipants', label: 'Event Participants', description: 'Event Participants', icon: 'IconUserCircle', isNullable: false, - createdAt, targetObjectName: 'calendarEventParticipant', targetFieldName: 'calendarEvent', settings: { @@ -287,5 +324,8 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-company-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-company-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts index 3407697614..35e95719dc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-company-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildCompanyStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'company'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,30 +99,34 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Company-specific fields name: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'The company name', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), domainName: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'domainName', type: FieldMetadataType.LINKS, label: 'Domain Name', @@ -124,28 +138,32 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ settings: { maxNumberOfValues: 1, }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), address: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'address', type: FieldMetadataType.ADDRESS, label: 'Address', description: 'Address of the company', icon: 'IconMap', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), addressOld: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'addressOld', type: FieldMetadataType.TEXT, label: 'Address (deprecated)', @@ -153,56 +171,64 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ 'Address of the company - deprecated in favor of new address field', icon: 'IconMap', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), employees: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'employees', type: FieldMetadataType.NUMBER, label: 'Employees', description: 'Number of employees in the company', icon: 'IconUsers', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), linkedinLink: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'linkedinLink', type: FieldMetadataType.LINKS, label: 'Linkedin', description: 'The company Linkedin account', icon: 'IconBrandLinkedin', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), xLink: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'xLink', type: FieldMetadataType.LINKS, label: 'X', description: 'The company Twitter/X account', icon: 'IconBrandX', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), annualRecurringRevenue: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'annualRecurringRevenue', type: FieldMetadataType.CURRENCY, label: 'ARR', @@ -210,14 +236,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ 'Annual Recurring Revenue: The actual or estimated annual revenue of the company', icon: 'IconMoneybag', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), idealCustomerProfile: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'idealCustomerProfile', type: FieldMetadataType.BOOLEAN, label: 'ICP', @@ -226,14 +254,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ icon: 'IconTarget', isNullable: false, defaultValue: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -242,14 +272,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -257,14 +289,16 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -272,22 +306,23 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields people: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'people', label: 'People', description: 'People linked to the company.', icon: 'IconUsers', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'company', settings: { @@ -295,18 +330,20 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), accountOwner: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'accountOwner', label: 'Account Owner', description: 'Your team member responsible for managing the company account', icon: 'IconUserCircle', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'accountOwnerForCompanies', settings: { @@ -316,18 +353,20 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), taskTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'taskTargets', label: 'Tasks', description: 'Tasks tied to the company', icon: 'IconCheckbox', isUIReadOnly: true, isNullable: true, - createdAt, targetObjectName: 'taskTarget', targetFieldName: 'company', settings: { @@ -335,18 +374,20 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), noteTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'noteTargets', label: 'Notes', description: 'Notes tied to the company', icon: 'IconNotes', isUIReadOnly: true, isNullable: true, - createdAt, targetObjectName: 'noteTarget', targetFieldName: 'company', settings: { @@ -354,17 +395,19 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), opportunities: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'opportunities', label: 'Opportunities', description: 'Opportunities linked to the company.', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'company', settings: { @@ -372,18 +415,20 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the company', icon: 'IconHeart', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'favorite', targetFieldName: 'company', settings: { @@ -391,18 +436,20 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Attachments linked to the company', icon: 'IconFileImport', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'attachment', targetFieldName: 'company', settings: { @@ -410,18 +457,20 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'company', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline Activities linked to the company', icon: 'IconIconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'company', settings: { @@ -429,5 +478,8 @@ export const buildCompanyStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-connected-account-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-connected-account-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts index 609d9a8b05..aa6ea65c35 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-connected-account-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts @@ -6,26 +6,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildConnectedAccountStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'connectedAccount'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -35,14 +36,16 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +55,16 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -69,14 +74,16 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,28 +92,32 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), handle: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'handle', type: FieldMetadataType.TEXT, label: 'handle', description: 'The account handle (email, username, phone number, etc.)', icon: 'IconMail', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), provider: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'provider', type: FieldMetadataType.TEXT, label: 'provider', @@ -114,132 +125,149 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ icon: 'IconSettings', isNullable: false, defaultValue: "'google'", - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), accessToken: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'accessToken', type: FieldMetadataType.TEXT, label: 'Access Token', description: 'Messaging provider access token', icon: 'IconKey', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), refreshToken: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'refreshToken', type: FieldMetadataType.TEXT, label: 'Refresh Token', description: 'Messaging provider refresh token', icon: 'IconKey', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), lastSyncHistoryId: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'lastSyncHistoryId', type: FieldMetadataType.TEXT, label: 'Last sync history ID', description: 'Last sync history ID', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), authFailedAt: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'authFailedAt', type: FieldMetadataType.DATE_TIME, label: 'Auth failed at', description: 'Auth failed at', icon: 'IconX', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), lastCredentialsRefreshedAt: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'lastCredentialsRefreshedAt', type: FieldMetadataType.DATE_TIME, label: 'Last credentials refreshed at', description: 'Last credentials refreshed at', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), handleAliases: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'handleAliases', type: FieldMetadataType.TEXT, label: 'Handle Aliases', description: 'Handle Aliases', icon: 'IconMail', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), scopes: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'scopes', type: FieldMetadataType.ARRAY, label: 'Scopes', description: 'Scopes', icon: 'IconSettings', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), connectionParameters: createStandardFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'connectionParameters', type: FieldMetadataType.RAW_JSON, label: 'Custom Connection Parameters', description: 'JSON object containing custom connection parameters', icon: 'IconSettings', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), accountOwner: createStandardRelationFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'accountOwner', label: 'Account Owner', description: 'Account Owner', icon: 'IconUserCircle', isNullable: false, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'connectedAccounts', settings: { @@ -249,17 +277,19 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageChannels: createStandardRelationFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'messageChannels', label: 'Message Channels', description: 'Message Channels', icon: 'IconMessage', isNullable: false, - createdAt, targetObjectName: 'messageChannel', targetFieldName: 'connectedAccount', settings: { @@ -267,17 +297,19 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarChannels: createStandardRelationFieldFlatMetadata({ - objectName: 'connectedAccount', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarChannels', label: 'Calendar Channels', description: 'Calendar Channels', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarChannel', targetFieldName: 'connectedAccount', settings: { @@ -285,5 +317,8 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-dashboard-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-dashboard-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts index 8e52f9320f..0131adadaa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-dashboard-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts @@ -2,24 +2,28 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildDashboardStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'dashboard'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -29,14 +33,16 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -46,14 +52,16 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -63,14 +71,16 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -79,30 +89,34 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Dashboard-specific fields title: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'title', type: FieldMetadataType.TEXT, label: 'Title', description: 'Dashboard title', icon: 'IconNotes', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -111,14 +125,16 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), pageLayoutId: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'pageLayoutId', type: FieldMetadataType.UUID, label: 'Page Layout ID', @@ -126,14 +142,16 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ icon: 'IconLayout', isNullable: true, isUIReadOnly: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -141,14 +159,16 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -156,23 +176,24 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline activities linked to the dashboard', icon: 'IconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'dashboard', settings: { @@ -180,18 +201,20 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the dashboard', icon: 'IconHeart', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'dashboard', settings: { @@ -199,18 +222,20 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'dashboard', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Attachments linked to the dashboard', icon: 'IconFileImport', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'attachment', targetFieldName: 'dashboard', settings: { @@ -218,5 +243,8 @@ export const buildDashboardStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-folder-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts similarity index 74% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-folder-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts index a57d51ff1e..b258f06080 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-folder-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts @@ -2,27 +2,28 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'favoriteFolder'>, FlatFieldMetadata > => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -32,14 +33,16 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -49,14 +52,16 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -66,14 +71,16 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -82,16 +89,18 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // FavoriteFolder-specific fields position: createStandardFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.NUMBER, label: 'Position', @@ -100,36 +109,39 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'Name of the favorite folder', icon: 'IconText', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'favoriteFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites in this folder', icon: 'IconHeart', isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'favoriteFolder', settings: { @@ -137,5 +149,8 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts similarity index 79% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts index 2f7d90b417..86d116b8ce 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-favorite-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildFavoriteStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'favorite'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -50,14 +56,16 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -67,14 +75,16 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -83,16 +93,18 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Favorite-specific fields position: createStandardFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.NUMBER, label: 'Position', @@ -101,36 +113,39 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), view: createStandardFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'view', type: FieldMetadataType.UUID, label: 'ViewId', description: 'ViewId', icon: 'IconView', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields forWorkspaceMember: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'forWorkspaceMember', label: 'Workspace Member', description: 'Favorite workspace member', icon: 'IconCircleUser', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'favorites', settings: { @@ -140,17 +155,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'Favorite person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'favorites', settings: { @@ -160,17 +177,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), company: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: 'Favorite company', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'favorites', settings: { @@ -180,17 +199,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), opportunity: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'opportunity', label: 'Opportunity', description: 'Favorite opportunity', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'favorites', settings: { @@ -200,17 +221,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflow: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'workflow', label: 'Workflow', description: 'Favorite workflow', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, targetObjectName: 'workflow', targetFieldName: 'favorites', settings: { @@ -220,17 +243,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflowVersion: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'workflowVersion', label: 'Workflow', description: 'Favorite workflow version', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, targetObjectName: 'workflowVersion', targetFieldName: 'favorites', settings: { @@ -240,17 +265,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflowRun: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'workflowRun', label: 'Workflow', description: 'Favorite workflow run', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, targetObjectName: 'workflowRun', targetFieldName: 'favorites', settings: { @@ -260,17 +287,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), task: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'task', label: 'Task', description: 'Favorite task', icon: 'IconCheckbox', isNullable: true, - createdAt, targetObjectName: 'task', targetFieldName: 'favorites', settings: { @@ -280,17 +309,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), note: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'note', label: 'Note', description: 'Favorite note', icon: 'IconNotes', isNullable: true, - createdAt, targetObjectName: 'note', targetFieldName: 'favorites', settings: { @@ -300,17 +331,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), dashboard: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'dashboard', label: 'Dashboard', description: 'Favorite dashboard', icon: 'IconLayoutDashboard', isNullable: true, - createdAt, targetObjectName: 'dashboard', targetFieldName: 'favorites', settings: { @@ -320,17 +353,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favoriteFolder: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'favoriteFolder', label: 'Favorite Folder', description: 'The folder this favorite belongs to', icon: 'IconFolder', isNullable: true, - createdAt, targetObjectName: 'favoriteFolder', targetFieldName: 'favorites', settings: { @@ -340,17 +375,19 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), custom: createStandardRelationFieldFlatMetadata({ - objectName: 'favorite', + objectName, workspaceId, - options: { + context: { fieldName: 'custom', label: 'Custom', description: 'Favorite custom object', icon: 'IconHeart', isNullable: true, - createdAt, targetObjectName: 'note', targetFieldName: 'favorites', settings: { @@ -360,5 +397,8 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-message-association-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-message-association-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts index aa4e00617b..80147c4265 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-message-association-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts @@ -6,28 +6,32 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; import { MessageDirection } from 'src/modules/messaging/common/enums/message-direction.enum'; export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, - }: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; - }): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, + }: Omit< + CreateStandardFieldArgs<'messageChannelMessageAssociation'>, + 'context' + >): Record< AllStandardObjectFieldName<'messageChannelMessageAssociation'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -37,14 +41,16 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -54,14 +60,16 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -87,42 +97,48 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageExternalId: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'messageExternalId', type: FieldMetadataType.TEXT, label: 'Message External Id', description: 'Message id from the messaging provider', icon: 'IconHash', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageThreadExternalId: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'messageThreadExternalId', type: FieldMetadataType.TEXT, label: 'Thread External Id', description: 'Thread id from the messaging provider', icon: 'IconHash', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), direction: createStandardFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'direction', type: FieldMetadataType.SELECT, label: 'Direction', @@ -144,20 +160,21 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = color: 'blue', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageChannel: createStandardRelationFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'messageChannel', label: 'Message Channel Id', description: 'Message Channel Id', icon: 'IconHash', isNullable: true, - createdAt, targetObjectName: 'messageChannel', targetFieldName: 'messageChannelMessageAssociations', settings: { @@ -167,17 +184,19 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageThread: createStandardRelationFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'messageThread', label: 'Message Thread Id', description: 'Message Thread Id', icon: 'IconHash', isNullable: true, - createdAt, targetObjectName: 'messageThread', targetFieldName: 'messageChannelMessageAssociations', settings: { @@ -187,17 +206,19 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), message: createStandardRelationFieldFlatMetadata({ - objectName: 'messageChannelMessageAssociation', + objectName, workspaceId, - options: { + context: { fieldName: 'message', label: 'Message Id', description: 'Message Id', icon: 'IconHash', isNullable: true, - createdAt, targetObjectName: 'message', targetFieldName: 'messageChannelMessageAssociations', settings: { @@ -207,5 +228,8 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas = }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts similarity index 82% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts index f60c92641e..b748f539d0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-channel-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts @@ -6,27 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; import { MessageChannelType } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; export const buildMessageChannelStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'messageChannel'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -36,14 +37,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -53,14 +56,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -70,14 +75,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -86,14 +93,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), visibility: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'visibility', type: FieldMetadataType.SELECT, label: 'Visibility', @@ -111,28 +120,32 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ color: 'orange', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), handle: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'handle', type: FieldMetadataType.TEXT, label: 'Handle', description: 'Handle', icon: 'IconAt', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), type: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'type', type: FieldMetadataType.SELECT, label: 'Type', @@ -154,14 +167,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ color: 'blue', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isContactAutoCreationEnabled: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'isContactAutoCreationEnabled', type: FieldMetadataType.BOOLEAN, label: 'Is Contact Auto Creation Enabled', @@ -169,14 +184,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ icon: 'IconUserCircle', isNullable: false, defaultValue: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), contactAutoCreationPolicy: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'contactAutoCreationPolicy', type: FieldMetadataType.SELECT, label: 'Contact auto creation policy', @@ -195,14 +212,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ { value: 'SENT', label: 'Sent', position: 1, color: 'blue' }, { value: 'NONE', label: 'None', position: 2, color: 'red' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageFolderImportPolicy: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'messageFolderImportPolicy', type: FieldMetadataType.SELECT, label: 'Message folder import policy', @@ -224,14 +243,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ color: 'blue', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), excludeNonProfessionalEmails: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'excludeNonProfessionalEmails', type: FieldMetadataType.BOOLEAN, label: 'Exclude non professional emails', @@ -239,14 +260,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ icon: 'IconBriefcase', isNullable: false, defaultValue: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), excludeGroupEmails: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'excludeGroupEmails', type: FieldMetadataType.BOOLEAN, label: 'Exclude group emails', @@ -254,14 +277,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ icon: 'IconUsersGroup', isNullable: false, defaultValue: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), pendingGroupEmailsAction: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'pendingGroupEmailsAction', type: FieldMetadataType.SELECT, label: 'Pending group emails action', @@ -284,14 +309,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ }, { value: 'NONE', label: 'None', position: 2, color: 'blue' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isSyncEnabled: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'isSyncEnabled', type: FieldMetadataType.BOOLEAN, label: 'Is Sync Enabled', @@ -299,42 +326,48 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ icon: 'IconRefresh', isNullable: false, defaultValue: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncCursor: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncCursor', type: FieldMetadataType.TEXT, label: 'Last sync cursor', description: 'Last sync cursor', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncedAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncedAt', type: FieldMetadataType.DATE_TIME, label: 'Last sync date', description: 'Last sync date', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncStatus: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncStatus', type: FieldMetadataType.SELECT, label: 'Sync status', @@ -363,14 +396,16 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ color: 'red', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncStage: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncStage', type: FieldMetadataType.SELECT, label: 'Sync stage', @@ -423,28 +458,32 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ color: 'gray', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncStageStartedAt: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'syncStageStartedAt', type: FieldMetadataType.DATE_TIME, label: 'Sync stage started at', description: 'Sync stage started at', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), throttleFailureCount: createStandardFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'throttleFailureCount', type: FieldMetadataType.NUMBER, label: 'Throttle Failure Count', @@ -452,20 +491,21 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ icon: 'IconX', isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), connectedAccount: createStandardRelationFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'connectedAccount', label: 'Connected Account', description: 'Connected Account', icon: 'IconUserCircle', isNullable: false, - createdAt, targetObjectName: 'connectedAccount', targetFieldName: 'messageChannels', settings: { @@ -475,17 +515,19 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageChannelMessageAssociations: createStandardRelationFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'messageChannelMessageAssociations', label: 'Message Channel Association', description: 'Messages from the channel.', icon: 'IconMessage', isNullable: true, - createdAt, targetObjectName: 'messageChannelMessageAssociation', targetFieldName: 'messageChannel', settings: { @@ -493,17 +535,19 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageFolders: createStandardRelationFieldFlatMetadata({ - objectName: 'messageChannel', + objectName, workspaceId, - options: { + context: { fieldName: 'messageFolders', label: 'Message Folders', description: 'Message Folders', icon: 'IconFolder', isNullable: true, - createdAt, targetObjectName: 'messageFolder', targetFieldName: 'messageChannel', settings: { @@ -511,5 +555,8 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-folder-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts similarity index 74% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-folder-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts index cd9df8f524..714deaf67c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-folder-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts @@ -6,23 +6,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildMessageFolderStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'messageFolder'>, + FlatFieldMetadata +> => ({ id: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -32,14 +36,16 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -49,14 +55,16 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -66,14 +74,16 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -82,42 +92,48 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'Folder name', icon: 'IconFolder', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), syncCursor: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'syncCursor', type: FieldMetadataType.TEXT, label: 'Sync Cursor', description: 'Sync Cursor', icon: 'IconHash', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isSentFolder: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'isSentFolder', type: FieldMetadataType.BOOLEAN, label: 'Is Sent Folder', @@ -125,14 +141,16 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ icon: 'IconCheck', isNullable: false, defaultValue: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), isSynced: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'isSynced', type: FieldMetadataType.BOOLEAN, label: 'Is Synced', @@ -140,42 +158,48 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ icon: 'IconCheck', isNullable: false, defaultValue: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), parentFolderId: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'parentFolderId', type: FieldMetadataType.TEXT, label: 'Parent Folder ID', description: 'Parent Folder ID', icon: 'IconFolder', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), externalId: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'externalId', type: FieldMetadataType.TEXT, label: 'External ID', description: 'External ID', icon: 'IconHash', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), pendingSyncAction: createStandardFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'pendingSyncAction', type: FieldMetadataType.SELECT, label: 'Pending Sync Action', @@ -192,20 +216,21 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ }, { value: 'NONE', label: 'None', position: 1, color: 'blue' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageChannel: createStandardRelationFieldFlatMetadata({ - objectName: 'messageFolder', + objectName, workspaceId, - options: { + context: { fieldName: 'messageChannel', label: 'Message Channel', description: 'Message Channel', icon: 'IconMessage', isNullable: false, - createdAt, targetObjectName: 'messageChannel', targetFieldName: 'messageFolders', settings: { @@ -215,5 +240,8 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-participant-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-participant-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts index 8a787aa646..20e9a15e80 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-participant-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts @@ -7,26 +7,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildMessageParticipantStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'messageParticipant'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -36,14 +37,16 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -53,14 +56,16 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -70,14 +75,16 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -86,14 +93,16 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), role: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'role', type: FieldMetadataType.SELECT, label: 'Role', @@ -127,48 +136,53 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ color: 'red', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), handle: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'handle', type: FieldMetadataType.TEXT, label: 'Handle', description: 'Handle', icon: 'IconAt', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), displayName: createStandardFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'displayName', type: FieldMetadataType.TEXT, label: 'Display Name', description: 'Display Name', icon: 'IconUser', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), message: createStandardRelationFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'message', label: 'Message', description: 'Message', icon: 'IconMessage', isNullable: false, - createdAt, targetObjectName: 'message', targetFieldName: 'messageParticipants', settings: { @@ -178,17 +192,19 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'Person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'messageParticipants', settings: { @@ -198,17 +214,19 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workspaceMember: createStandardRelationFieldFlatMetadata({ - objectName: 'messageParticipant', + objectName, workspaceId, - options: { + context: { fieldName: 'workspaceMember', label: 'Workspace Member', description: 'Workspace member', icon: 'IconCircleUser', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'messageParticipants', settings: { @@ -218,5 +236,8 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts index 32206e94d1..d88aa623f3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts @@ -6,23 +6,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildMessageStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'message'>, + FlatFieldMetadata +> => ({ id: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -32,14 +36,16 @@ export const buildMessageStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -49,14 +55,16 @@ export const buildMessageStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -66,14 +74,16 @@ export const buildMessageStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -82,28 +92,32 @@ export const buildMessageStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), headerMessageId: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'headerMessageId', type: FieldMetadataType.TEXT, label: 'Header message Id', description: 'Message id from the message header', icon: 'IconHash', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), direction: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'direction', type: FieldMetadataType.SELECT, label: 'Direction', @@ -115,62 +129,69 @@ export const buildMessageStandardFlatFieldMetadatas = ({ { value: 'INCOMING', label: 'Incoming', position: 0, color: 'green' }, { value: 'OUTGOING', label: 'Outgoing', position: 1, color: 'blue' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), subject: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'subject', type: FieldMetadataType.TEXT, label: 'Subject', description: 'Subject', icon: 'IconMessage', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), text: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'text', type: FieldMetadataType.TEXT, label: 'Text', description: 'Text', icon: 'IconMessage', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), receivedAt: createStandardFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'receivedAt', type: FieldMetadataType.DATE_TIME, label: 'Received At', description: 'The date the message was received', icon: 'IconCalendar', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageThread: createStandardRelationFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'messageThread', label: 'Message Thread Id', description: 'Message Thread Id', icon: 'IconHash', isNullable: true, - createdAt, targetObjectName: 'messageThread', targetFieldName: 'messages', settings: { @@ -180,17 +201,19 @@ export const buildMessageStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageParticipants: createStandardRelationFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'messageParticipants', label: 'Message Participants', description: 'Message Participants', icon: 'IconUserCircle', isNullable: true, - createdAt, targetObjectName: 'messageParticipant', targetFieldName: 'message', settings: { @@ -198,17 +221,19 @@ export const buildMessageStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageChannelMessageAssociations: createStandardRelationFieldFlatMetadata({ - objectName: 'message', + objectName, workspaceId, - options: { + context: { fieldName: 'messageChannelMessageAssociations', label: 'Message Channel Association', description: 'Messages from the channel.', icon: 'IconMessage', isNullable: true, - createdAt, targetObjectName: 'messageChannelMessageAssociation', targetFieldName: 'message', settings: { @@ -216,5 +241,8 @@ export const buildMessageStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-thread-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-thread-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts index 2dc23a23ef..0116f66812 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-message-thread-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts @@ -2,23 +2,27 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildMessageThreadStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'messageThread'>, + FlatFieldMetadata +> => ({ id: createStandardFieldFlatMetadata({ - objectName: 'messageThread', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -28,14 +32,16 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'messageThread', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -45,14 +51,16 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'messageThread', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -62,14 +70,16 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'messageThread', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -78,20 +88,21 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messages: createStandardRelationFieldFlatMetadata({ - objectName: 'messageThread', + objectName, workspaceId, - options: { + context: { fieldName: 'messages', label: 'Messages', description: 'Messages from the thread.', icon: 'IconMessage', isNullable: true, - createdAt, targetObjectName: 'message', targetFieldName: 'messageThread', settings: { @@ -99,17 +110,19 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageChannelMessageAssociations: createStandardRelationFieldFlatMetadata({ - objectName: 'messageThread', + objectName, workspaceId, - options: { + context: { fieldName: 'messageChannelMessageAssociations', label: 'Message Channel Association', description: 'Messages from the channel.', icon: 'IconMessage', isNullable: true, - createdAt, targetObjectName: 'messageChannelMessageAssociation', targetFieldName: 'messageThread', settings: { @@ -117,5 +130,8 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-note-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-note-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts index eae7ca09ed..0df2093fc2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-note-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts @@ -2,24 +2,28 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildNoteStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'note'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -29,14 +33,16 @@ export const buildNoteStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -48,14 +54,16 @@ export const buildNoteStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -67,14 +75,16 @@ export const buildNoteStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,16 +95,18 @@ export const buildNoteStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Note-specific fields position: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -103,56 +115,64 @@ export const buildNoteStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), title: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'title', type: FieldMetadataType.TEXT, label: 'Title', description: 'Note title', icon: 'IconNotes', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), body: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'body', type: FieldMetadataType.TEXT, label: 'Body (deprecated)', description: 'Note body (deprecated - use bodyV2)', icon: 'IconFilePencil', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), bodyV2: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'bodyV2', type: FieldMetadataType.RICH_TEXT_V2, label: 'Body', description: 'Note body', icon: 'IconFilePencil', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -160,14 +180,16 @@ export const buildNoteStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -175,23 +197,24 @@ export const buildNoteStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields noteTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'noteTargets', label: 'Relations', description: 'Note targets', icon: 'IconArrowUpRight', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'noteTarget', targetFieldName: 'note', settings: { @@ -199,18 +222,20 @@ export const buildNoteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Note attachments', icon: 'IconFileImport', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'attachment', targetFieldName: 'note', settings: { @@ -218,18 +243,20 @@ export const buildNoteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline Activities linked to the note.', icon: 'IconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'note', settings: { @@ -237,18 +264,20 @@ export const buildNoteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'note', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the note', icon: 'IconHeart', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'note', settings: { @@ -256,5 +285,8 @@ export const buildNoteStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-note-target-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-note-target-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts index 36e6fe6494..fd744263b2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-note-target-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildNoteTargetStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'noteTarget'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,22 +99,23 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields note: createStandardRelationFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'note', label: 'Note', description: 'NoteTarget note', icon: 'IconNotes', isNullable: true, - createdAt, targetObjectName: 'note', targetFieldName: 'noteTargets', settings: { @@ -114,17 +125,19 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'NoteTarget person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'noteTargets', settings: { @@ -134,17 +147,19 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), company: createStandardRelationFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: 'NoteTarget company', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'noteTargets', settings: { @@ -154,17 +169,19 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), opportunity: createStandardRelationFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'opportunity', label: 'Opportunity', description: 'NoteTarget opportunity', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'noteTargets', settings: { @@ -174,17 +191,19 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), custom: createStandardRelationFieldFlatMetadata({ - objectName: 'noteTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'custom', label: 'Custom', description: 'NoteTarget custom object', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, // Custom is a dynamic relation targetObjectName: 'note', targetFieldName: 'noteTargets', @@ -195,5 +214,8 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-opportunity-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts similarity index 78% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-opportunity-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts index 05f40531d7..3e5d2dee91 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-opportunity-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildOpportunityStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'opportunity'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,58 +99,66 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Opportunity-specific fields name: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'The opportunity name', icon: 'IconTargetArrow', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), amount: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'amount', type: FieldMetadataType.CURRENCY, label: 'Amount', description: 'Opportunity amount', icon: 'IconCurrencyDollar', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), closeDate: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'closeDate', type: FieldMetadataType.DATE_TIME, label: 'Close date', description: 'Opportunity close date', icon: 'IconCalendarEvent', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), stage: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'stage', type: FieldMetadataType.SELECT, label: 'Stage', @@ -165,14 +183,16 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, { value: 'CUSTOMER', label: 'Customer', position: 4, color: 'yellow' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -181,14 +201,16 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -196,14 +218,16 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -211,22 +235,23 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields pointOfContact: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'pointOfContact', label: 'Point of Contact', description: 'Opportunity point of contact', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'pointOfContactForOpportunities', settings: { @@ -236,17 +261,19 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), company: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: 'Opportunity company', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'opportunities', settings: { @@ -256,18 +283,20 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the opportunity', icon: 'IconHeart', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'favorite', targetFieldName: 'opportunity', settings: { @@ -275,18 +304,20 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), taskTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'taskTargets', label: 'Tasks', description: 'Tasks tied to the opportunity', icon: 'IconCheckbox', isUIReadOnly: true, isNullable: true, - createdAt, targetObjectName: 'taskTarget', targetFieldName: 'opportunity', settings: { @@ -294,18 +325,20 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), noteTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'noteTargets', label: 'Notes', description: 'Notes tied to the opportunity', icon: 'IconNotes', isUIReadOnly: true, isNullable: true, - createdAt, targetObjectName: 'noteTarget', targetFieldName: 'opportunity', settings: { @@ -313,18 +346,20 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Attachments linked to the opportunity', icon: 'IconFileImport', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'attachment', targetFieldName: 'opportunity', settings: { @@ -332,18 +367,20 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'opportunity', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline Activities linked to the opportunity.', icon: 'IconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'opportunity', settings: { @@ -351,5 +388,8 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-person-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-person-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts index 4579c22103..3c75c55aee 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-person-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildPersonStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'person'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildPersonStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildPersonStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildPersonStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,44 +99,50 @@ export const buildPersonStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Person-specific fields name: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.FULL_NAME, label: 'Name', description: "Contact's name", icon: 'IconUser', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), email: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'email', type: FieldMetadataType.TEXT, label: 'Email', description: "Contact's Email (deprecated)", icon: 'IconMail', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), emails: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'emails', type: FieldMetadataType.EMAILS, label: 'Emails', @@ -137,70 +153,80 @@ export const buildPersonStandardFlatFieldMetadatas = ({ settings: { maxNumberOfValues: 1, }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), linkedinLink: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'linkedinLink', type: FieldMetadataType.LINKS, label: 'Linkedin', description: "Contact's Linkedin account", icon: 'IconBrandLinkedin', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), xLink: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'xLink', type: FieldMetadataType.LINKS, label: 'X', description: "Contact's X/Twitter account", icon: 'IconBrandX', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), jobTitle: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'jobTitle', type: FieldMetadataType.TEXT, label: 'Job Title', description: "Contact's job title", icon: 'IconBriefcase', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), phone: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'phone', type: FieldMetadataType.TEXT, label: 'Phone', description: "Contact's phone number (deprecated)", icon: 'IconPhone', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), phones: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'phones', type: FieldMetadataType.PHONES, label: 'Phones', @@ -210,28 +236,32 @@ export const buildPersonStandardFlatFieldMetadatas = ({ settings: { maxNumberOfValues: 1, }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), city: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'city', type: FieldMetadataType.TEXT, label: 'City', description: "Contact's city", icon: 'IconMap', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), avatarUrl: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'avatarUrl', type: FieldMetadataType.TEXT, label: 'Avatar', @@ -239,14 +269,16 @@ export const buildPersonStandardFlatFieldMetadatas = ({ icon: 'IconFileUpload', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -255,14 +287,16 @@ export const buildPersonStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -270,22 +304,23 @@ export const buildPersonStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields company: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: "Contact's company", icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'people', settings: { @@ -295,18 +330,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), pointOfContactForOpportunities: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'pointOfContactForOpportunities', label: 'Opportunities', description: 'List of opportunities for which that person is the point of contact', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'pointOfContact', settings: { @@ -314,18 +351,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), taskTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'taskTargets', label: 'Tasks', description: 'Tasks tied to the contact', icon: 'IconCheckbox', isUIReadOnly: true, isNullable: true, - createdAt, targetObjectName: 'taskTarget', targetFieldName: 'person', settings: { @@ -333,18 +372,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), noteTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'noteTargets', label: 'Notes', description: 'Notes tied to the contact', icon: 'IconNotes', isUIReadOnly: true, isNullable: true, - createdAt, targetObjectName: 'noteTarget', targetFieldName: 'person', settings: { @@ -352,18 +393,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the contact', icon: 'IconHeart', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'favorite', targetFieldName: 'person', settings: { @@ -371,18 +414,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Attachments linked to the contact.', icon: 'IconFileImport', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'attachment', targetFieldName: 'person', settings: { @@ -390,18 +435,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageParticipants: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'messageParticipants', label: 'Message Participants', description: 'Message Participants', icon: 'IconUserCircle', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'messageParticipant', targetFieldName: 'person', settings: { @@ -409,18 +456,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarEventParticipants: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarEventParticipants', label: 'Calendar Event Participants', description: 'Calendar Event Participants', icon: 'IconCalendar', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'calendarEventParticipant', targetFieldName: 'person', settings: { @@ -428,18 +477,20 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Events', description: 'Events linked to the person', icon: 'IconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'person', settings: { @@ -447,11 +498,14 @@ export const buildPersonStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'person', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -459,8 +513,10 @@ export const buildPersonStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-task-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-task-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts index 1abf774b12..4a101938eb 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-task-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildTaskStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'task'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildTaskStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildTaskStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildTaskStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,16 +99,18 @@ export const buildTaskStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Task-specific fields position: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -107,70 +119,80 @@ export const buildTaskStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), title: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'title', type: FieldMetadataType.TEXT, label: 'Title', description: 'Task title', icon: 'IconNotes', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), body: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'body', type: FieldMetadataType.TEXT, label: 'Body (deprecated)', description: 'Task body (deprecated - use bodyV2)', icon: 'IconFilePencil', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), bodyV2: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'bodyV2', type: FieldMetadataType.RICH_TEXT_V2, label: 'Body', description: 'Task body', icon: 'IconFilePencil', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), dueAt: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'dueAt', type: FieldMetadataType.DATE_TIME, label: 'Due Date', description: 'Task due date', icon: 'IconCalendarEvent', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), status: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'status', type: FieldMetadataType.SELECT, label: 'Status', @@ -188,14 +210,16 @@ export const buildTaskStandardFlatFieldMetadatas = ({ }, { value: 'DONE', label: 'Done', position: 2, color: 'green' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -203,14 +227,16 @@ export const buildTaskStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -218,23 +244,24 @@ export const buildTaskStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields taskTargets: createStandardRelationFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'taskTargets', label: 'Relations', description: 'Task targets', icon: 'IconArrowUpRight', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'taskTarget', targetFieldName: 'task', settings: { @@ -242,18 +269,20 @@ export const buildTaskStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Task attachments', icon: 'IconFileImport', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'attachment', targetFieldName: 'task', settings: { @@ -261,17 +290,19 @@ export const buildTaskStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), assignee: createStandardRelationFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'assignee', label: 'Assignee', description: 'Task assignee', icon: 'IconUserCircle', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'assignedTasks', settings: { @@ -281,18 +312,20 @@ export const buildTaskStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline Activities linked to the task.', icon: 'IconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'task', settings: { @@ -300,18 +333,20 @@ export const buildTaskStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'task', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the task', icon: 'IconHeart', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'task', settings: { @@ -319,5 +354,8 @@ export const buildTaskStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-task-target-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-task-target-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts index 63e87a2765..98beb86a00 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-task-target-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts @@ -6,24 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildTaskTargetStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'taskTarget'>, + FlatFieldMetadata +> => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -33,14 +37,16 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -71,14 +79,16 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -89,22 +99,23 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ settings: { displayFormat: 'RELATIVE', }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields task: createStandardRelationFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'task', label: 'Task', description: 'TaskTarget task', icon: 'IconCheckbox', isNullable: true, - createdAt, targetObjectName: 'task', targetFieldName: 'taskTargets', settings: { @@ -114,17 +125,19 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'TaskTarget person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'taskTargets', settings: { @@ -134,17 +147,19 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), company: createStandardRelationFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: 'TaskTarget company', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'taskTargets', settings: { @@ -154,17 +169,19 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), opportunity: createStandardRelationFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'opportunity', label: 'Opportunity', description: 'TaskTarget opportunity', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'taskTargets', settings: { @@ -174,17 +191,19 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), custom: createStandardRelationFieldFlatMetadata({ - objectName: 'taskTarget', + objectName, workspaceId, - options: { + context: { fieldName: 'custom', label: 'Custom', description: 'TaskTarget custom object', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, // Custom is a dynamic relation targetObjectName: 'task', targetFieldName: 'taskTargets', @@ -195,5 +214,8 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-timeline-activity-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts similarity index 79% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-timeline-activity-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts index f332fea36a..c530d71872 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-timeline-activity-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts @@ -6,27 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildTimelineActivityStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'timelineActivity'>, FlatFieldMetadata > => ({ // Base fields from BaseWorkspaceEntity id: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -36,14 +37,16 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -53,14 +56,16 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -70,14 +75,16 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -86,16 +93,18 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // TimelineActivity-specific fields happensAt: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'happensAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -103,92 +112,103 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ icon: 'IconCalendar', isNullable: false, defaultValue: 'now', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Event name', description: 'Event name', icon: 'IconAbc', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), properties: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'properties', type: FieldMetadataType.RAW_JSON, label: 'Event details', description: 'Json value for event details', icon: 'IconListDetails', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), linkedRecordCachedName: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'linkedRecordCachedName', type: FieldMetadataType.TEXT, label: 'Linked Record cached name', description: 'Cached record name', icon: 'IconAbc', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), linkedRecordId: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'linkedRecordId', type: FieldMetadataType.UUID, label: 'Linked Record id', description: 'Linked Record id', icon: 'IconAbc', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), linkedObjectMetadataId: createStandardFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'linkedObjectMetadataId', type: FieldMetadataType.UUID, label: 'Linked Object Metadata Id', description: 'Linked Object Metadata Id', icon: 'IconAbc', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), // Relation fields workspaceMember: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'workspaceMember', label: 'Workspace Member', description: 'Event workspace member', icon: 'IconCircleUser', isNullable: true, - createdAt, targetObjectName: 'workspaceMember', targetFieldName: 'timelineActivities', settings: { @@ -198,17 +218,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), person: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'person', label: 'Person', description: 'Event person', icon: 'IconUser', isNullable: true, - createdAt, targetObjectName: 'person', targetFieldName: 'timelineActivities', settings: { @@ -218,17 +240,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), company: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'company', label: 'Company', description: 'Event company', icon: 'IconBuildingSkyscraper', isNullable: true, - createdAt, targetObjectName: 'company', targetFieldName: 'timelineActivities', settings: { @@ -238,17 +262,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), opportunity: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'opportunity', label: 'Opportunity', description: 'Event opportunity', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'opportunity', targetFieldName: 'timelineActivities', settings: { @@ -258,17 +284,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), note: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'note', label: 'Note', description: 'Event note', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'note', targetFieldName: 'timelineActivities', settings: { @@ -278,17 +306,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), task: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'task', label: 'Task', description: 'Event task', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'task', targetFieldName: 'timelineActivities', settings: { @@ -298,17 +328,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflow: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'workflow', label: 'Workflow', description: 'Event workflow', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'workflow', targetFieldName: 'timelineActivities', settings: { @@ -318,17 +350,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflowVersion: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'workflowVersion', label: 'WorkflowVersion', description: 'Event workflow version', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'workflowVersion', targetFieldName: 'timelineActivities', settings: { @@ -338,17 +372,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflowRun: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'workflowRun', label: 'Workflow Run', description: 'Event workflow run', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'workflowRun', targetFieldName: 'timelineActivities', settings: { @@ -358,17 +394,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), dashboard: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'dashboard', label: 'Dashboard', description: 'Event dashboard', icon: 'IconTargetArrow', isNullable: true, - createdAt, targetObjectName: 'dashboard', targetFieldName: 'timelineActivities', settings: { @@ -378,17 +416,19 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), custom: createStandardRelationFieldFlatMetadata({ - objectName: 'timelineActivity', + objectName, workspaceId, - options: { + context: { fieldName: 'custom', label: 'Custom', description: 'Timeline Activity custom object', icon: 'IconTimeline', isNullable: true, - createdAt, targetObjectName: 'note', targetFieldName: 'timelineActivities', settings: { @@ -398,5 +438,8 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts index 2ff5c05e3f..cab8174fa6 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts @@ -6,26 +6,30 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit< + CreateStandardFieldArgs<'workflowAutomatedTrigger'>, + 'context' +>): Record< AllStandardObjectFieldName<'workflowAutomatedTrigger'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -35,14 +39,16 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +58,16 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -69,14 +77,16 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,14 +95,16 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), type: createStandardFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'type', type: FieldMetadataType.SELECT, label: 'Automated Trigger Type', @@ -108,34 +120,37 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ }, { value: 'CRON', label: 'Cron', position: 1, color: 'blue' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), settings: createStandardFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'settings', type: FieldMetadataType.RAW_JSON, label: 'Settings', description: 'The workflow automated trigger settings', icon: 'IconSettings', isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflow: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowAutomatedTrigger', + objectName, workspaceId, - options: { + context: { fieldName: 'workflow', label: 'Workflow', description: 'WorkflowAutomatedTrigger workflow', icon: 'IconSettingsAutomation', isNullable: false, - createdAt, targetObjectName: 'workflow', targetFieldName: 'automatedTriggers', settings: { @@ -145,5 +160,8 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-run-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-run-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts index 0d33fe1b5c..a0a857e6ff 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-run-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts @@ -6,23 +6,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildWorkflowRunStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'workflowRun'>, + FlatFieldMetadata +> => ({ id: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -32,14 +36,16 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -49,14 +55,16 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -66,14 +74,16 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -82,70 +92,80 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'Name of the workflow run', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), enqueuedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'enqueuedAt', type: FieldMetadataType.DATE_TIME, label: 'Workflow run enqueued at', description: 'Workflow run enqueued at', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), startedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'startedAt', type: FieldMetadataType.DATE_TIME, label: 'Workflow run started at', description: 'Workflow run started at', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), endedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'endedAt', type: FieldMetadataType.DATE_TIME, label: 'Workflow run ended at', description: 'Workflow run ended at', icon: 'IconHistory', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), status: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'status', type: FieldMetadataType.SELECT, label: 'Workflow run status', @@ -167,70 +187,80 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ { value: 'STOPPING', label: 'Stopping', position: 5, color: 'orange' }, { value: 'STOPPED', label: 'Stopped', position: 6, color: 'gray' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Executed by', description: 'The executor of the workflow', icon: 'IconCreativeCommonsSa', isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), state: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'state', type: FieldMetadataType.RAW_JSON, label: 'State', description: 'State of the workflow run', icon: 'IconHierarchy2', isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), context: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'context', type: FieldMetadataType.RAW_JSON, label: 'Context', description: 'Context of the workflow run', icon: 'IconHierarchy2', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), output: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'output', type: FieldMetadataType.RAW_JSON, label: 'Output', description: 'Output of the workflow run', icon: 'IconHierarchy2', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -239,14 +269,16 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -254,20 +286,21 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflowVersion: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'workflowVersion', label: 'Workflow version', description: 'Workflow version linked to the run.', icon: 'IconVersions', isNullable: false, - createdAt, targetObjectName: 'workflowVersion', targetFieldName: 'runs', settings: { @@ -277,17 +310,19 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflow: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'workflow', label: 'Workflow', description: 'Workflow linked to the run.', icon: 'IconSettingsAutomation', isNullable: false, - createdAt, targetObjectName: 'workflow', targetFieldName: 'runs', settings: { @@ -297,18 +332,20 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the workflow run', icon: 'IconHeart', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'workflowRun', settings: { @@ -316,18 +353,20 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowRun', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline activities linked to the run', icon: 'IconTimelineEvent', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'workflowRun', settings: { @@ -335,5 +374,8 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts index 028e20aba4..936dbba99a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts @@ -2,23 +2,27 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildWorkflowStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record, FlatFieldMetadata> => ({ + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectFieldName<'workflow'>, + FlatFieldMetadata +> => ({ id: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -28,14 +32,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -45,14 +51,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -62,14 +70,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -78,28 +88,32 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'The workflow name', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), lastPublishedVersionId: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'lastPublishedVersionId', type: FieldMetadataType.TEXT, label: 'Last published Version Id', @@ -107,14 +121,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ icon: 'IconVersions', isNullable: true, isUIReadOnly: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), statuses: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'statuses', type: FieldMetadataType.MULTI_SELECT, label: 'Statuses', @@ -132,14 +148,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ color: 'gray', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -148,14 +166,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdBy: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'createdBy', type: FieldMetadataType.ACTOR, label: 'Created by', @@ -163,14 +183,16 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ icon: 'IconCreativeCommonsSa', isUIReadOnly: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -178,21 +200,22 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), versions: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'versions', label: 'Versions', description: 'Workflow versions linked to the workflow.', icon: 'IconVersions', isUIReadOnly: true, isNullable: false, - createdAt, targetObjectName: 'workflowVersion', targetFieldName: 'workflow', settings: { @@ -200,18 +223,20 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), runs: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'runs', label: 'Runs', description: 'Workflow runs linked to the workflow.', icon: 'IconRun', isUIReadOnly: true, isNullable: false, - createdAt, targetObjectName: 'workflowRun', targetFieldName: 'workflow', settings: { @@ -219,11 +244,14 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), eventListeners: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'eventListeners', label: 'Event Listeners', description: 'Workflow event listeners linked to the workflow.', @@ -231,7 +259,6 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isSystem: true, isUIReadOnly: true, isNullable: false, - createdAt, targetObjectName: 'workflowAutomatedTrigger', targetFieldName: 'workflow', settings: { @@ -239,11 +266,14 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), automatedTriggers: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'automatedTriggers', label: 'Automated Triggers', description: 'Workflow automated triggers linked to the workflow.', @@ -251,7 +281,6 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ isSystem: true, isUIReadOnly: true, isNullable: false, - createdAt, targetObjectName: 'workflowAutomatedTrigger', targetFieldName: 'workflow', settings: { @@ -259,18 +288,20 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the workflow', icon: 'IconHeart', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'workflow', settings: { @@ -278,18 +309,20 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline activities linked to the workflow', icon: 'IconTimelineEvent', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'workflow', settings: { @@ -297,18 +330,20 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), attachments: createStandardRelationFieldFlatMetadata({ - objectName: 'workflow', + objectName, workspaceId, - options: { + context: { fieldName: 'attachments', label: 'Attachments', description: 'Attachments linked to the workflow', icon: 'IconFileUpload', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'attachment', targetFieldName: 'workflow', settings: { @@ -316,5 +351,8 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-version-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-version-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts index 5de787e94d..4e1e745ee5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workflow-version-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts @@ -6,26 +6,27 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'workflowVersion'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -35,14 +36,16 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -52,14 +55,16 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -69,14 +74,16 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -85,56 +92,64 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.TEXT, label: 'Name', description: 'The workflow version name', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), trigger: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'trigger', type: FieldMetadataType.RAW_JSON, label: 'Version trigger', description: 'Json object to provide trigger', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), steps: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'steps', type: FieldMetadataType.RAW_JSON, label: 'Version steps', description: 'Json object to provide steps', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), status: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'status', type: FieldMetadataType.SELECT, label: 'Version status', @@ -153,14 +168,16 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ }, { value: 'ARCHIVED', label: 'Archived', position: 3, color: 'gray' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -169,14 +186,16 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -184,20 +203,21 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), workflow: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'workflow', label: 'Workflow', description: 'WorkflowVersion workflow', icon: 'IconSettingsAutomation', isNullable: true, - createdAt, targetObjectName: 'workflow', targetFieldName: 'versions', settings: { @@ -207,17 +227,19 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), runs: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'runs', label: 'Runs', description: 'Workflow runs linked to the version.', icon: 'IconRun', isNullable: true, - createdAt, targetObjectName: 'workflowRun', targetFieldName: 'workflowVersion', settings: { @@ -225,18 +247,20 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the workflow version', icon: 'IconHeart', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'workflowVersion', settings: { @@ -244,18 +268,20 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'workflowVersion', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Timeline Activities', description: 'Timeline activities linked to the version', icon: 'IconTimelineEvent', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'workflowVersion', settings: { @@ -263,5 +289,8 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workspace-member-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workspace-member-standard-flat-field-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts index 2a4d952e03..c89529ddf1 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/compute-workspace-member-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts @@ -6,27 +6,28 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; -import { createStandardFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util'; -import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { + type CreateStandardFieldArgs, + createStandardFieldFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; +import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; import { WorkspaceMemberNumberFormatEnum } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ - createdAt, + now, + objectName, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): Record< + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< AllStandardObjectFieldName<'workspaceMember'>, FlatFieldMetadata > => ({ id: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'id', type: FieldMetadataType.UUID, label: 'Id', @@ -36,14 +37,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isNullable: false, isUIReadOnly: true, defaultValue: 'uuid', - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), createdAt: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'createdAt', type: FieldMetadataType.DATE_TIME, label: 'Creation date', @@ -53,14 +56,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), updatedAt: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'updatedAt', type: FieldMetadataType.DATE_TIME, label: 'Last update', @@ -70,14 +75,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isUIReadOnly: true, defaultValue: 'now', settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), deletedAt: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'deletedAt', type: FieldMetadataType.DATE_TIME, label: 'Deleted at', @@ -86,14 +93,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isNullable: true, isUIReadOnly: true, settings: { displayFormat: 'RELATIVE' }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), position: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'position', type: FieldMetadataType.POSITION, label: 'Position', @@ -102,28 +111,32 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: 0, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), name: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'name', type: FieldMetadataType.FULL_NAME, label: 'Name', description: 'Workspace member name', icon: 'IconCircleUser', isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), colorScheme: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'colorScheme', type: FieldMetadataType.TEXT, label: 'Color Scheme', @@ -132,14 +145,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: "'System'", - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), locale: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'locale', type: FieldMetadataType.TEXT, label: 'Language', @@ -148,14 +163,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: "'en'", - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), avatarUrl: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'avatarUrl', type: FieldMetadataType.TEXT, label: 'Avatar Url', @@ -163,14 +180,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ icon: 'IconFileUpload', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), userEmail: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'userEmail', type: FieldMetadataType.TEXT, label: 'User Email', @@ -179,14 +198,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: true, isUnique: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarStartDay: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarStartDay', type: FieldMetadataType.NUMBER, label: 'Start of the week', @@ -198,14 +219,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ settings: { dataType: NumberDataType.INT, }, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), userId: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'userId', type: FieldMetadataType.UUID, label: 'User Id', @@ -213,14 +236,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ icon: 'IconCircleUsers', isSystem: true, isNullable: false, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timeZone: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'timeZone', type: FieldMetadataType.TEXT, label: 'Time zone', @@ -229,14 +254,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ isSystem: true, isNullable: false, defaultValue: "'system'", - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), dateFormat: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'dateFormat', type: FieldMetadataType.SELECT, label: 'Date format', @@ -261,14 +288,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, { value: 'YEAR_FIRST', label: 'Year First', position: 3, color: 'sky' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timeFormat: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'timeFormat', type: FieldMetadataType.SELECT, label: 'Time format', @@ -282,14 +311,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ { value: 'HOUR_24', label: '24HRS', position: 1, color: 'red' }, { value: 'HOUR_12', label: '12HRS', position: 2, color: 'purple' }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), numberFormat: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'numberFormat', type: FieldMetadataType.SELECT, label: 'Number format', @@ -330,14 +361,16 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ color: 'purple', }, ], - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), searchVector: createStandardFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'searchVector', type: FieldMetadataType.TS_VECTOR, label: 'Search vector', @@ -345,20 +378,21 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ icon: 'IconUser', isSystem: true, isNullable: true, - createdAt, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), assignedTasks: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'assignedTasks', label: 'Assigned tasks', description: 'Tasks assigned to the workspace member', icon: 'IconCheckbox', isNullable: false, - createdAt, targetObjectName: 'task', targetFieldName: 'assignee', settings: { @@ -366,17 +400,19 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), favorites: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'favorites', label: 'Favorites', description: 'Favorites linked to the workspace member', icon: 'IconHeart', isNullable: false, - createdAt, targetObjectName: 'favorite', targetFieldName: 'forWorkspaceMember', settings: { @@ -384,17 +420,19 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), accountOwnerForCompanies: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'accountOwnerForCompanies', label: 'Account Owner For Companies', description: 'Account owner for companies', icon: 'IconBriefcase', isNullable: false, - createdAt, targetObjectName: 'company', targetFieldName: 'accountOwner', settings: { @@ -402,18 +440,20 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), authoredAttachments: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'authoredAttachments', label: 'Authored attachments', description: 'Attachments created by the workspace member', icon: 'IconFileImport', isSystem: true, isNullable: false, - createdAt, targetObjectName: 'attachment', targetFieldName: 'author', settings: { @@ -421,17 +461,19 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), connectedAccounts: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'connectedAccounts', label: 'Connected accounts', description: 'Connected accounts', icon: 'IconAt', isNullable: false, - createdAt, targetObjectName: 'connectedAccount', targetFieldName: 'accountOwner', settings: { @@ -439,17 +481,19 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), messageParticipants: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'messageParticipants', label: 'Message Participants', description: 'Message Participants', icon: 'IconUserCircle', isNullable: false, - createdAt, targetObjectName: 'messageParticipant', targetFieldName: 'workspaceMember', settings: { @@ -457,17 +501,19 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), blocklist: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'blocklist', label: 'Blocklist', description: 'Blocklisted handles', icon: 'IconForbid2', isNullable: false, - createdAt, targetObjectName: 'blocklist', targetFieldName: 'workspaceMember', settings: { @@ -475,17 +521,19 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), calendarEventParticipants: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'calendarEventParticipants', label: 'Calendar Event Participants', description: 'Calendar Event Participants', icon: 'IconCalendar', isNullable: false, - createdAt, targetObjectName: 'calendarEventParticipant', targetFieldName: 'workspaceMember', settings: { @@ -493,18 +541,20 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), timelineActivities: createStandardRelationFieldFlatMetadata({ - objectName: 'workspaceMember', + objectName, workspaceId, - options: { + context: { fieldName: 'timelineActivities', label: 'Events', description: 'Events linked to the workspace member', icon: 'IconTimelineEvent', isSystem: true, isNullable: true, - createdAt, targetObjectName: 'timelineActivity', targetFieldName: 'workspaceMember', settings: { @@ -512,5 +562,8 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({ }, }, standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, }), }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util.ts similarity index 63% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util.ts index dbacdb457a..6891ed5391 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-field-flat-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util.ts @@ -8,35 +8,31 @@ import { v4 } from 'uuid'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { TWENTY_STANDARD_APPLICATION } from 'src/engine/workspace-manager/twenty-standard-application/constants/twenty-standard-applications'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { type StandardBuilderArgs } from 'src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type'; -const TWENTY_STANDARD_APPLICATION_ID = - TWENTY_STANDARD_APPLICATION.universalIdentifier; - -export type CreateStandardFieldOptions = { - fieldName: AllStandardObjectFieldName; - type: Exclude; - label: string; - description: string; - icon: string; - isSystem?: boolean; - isNullable?: boolean; - isUnique?: boolean; - isUIReadOnly?: boolean; - defaultValue?: FieldMetadataDefaultValueForAnyType; - settings?: Record | null; - options?: FieldMetadataDefaultOption[] | FieldMetadataComplexOption[] | null; - createdAt: Date; -}; - -export type CreateStandardFieldArgs = { +export type CreateStandardFieldArgs< + O extends AllStandardObjectName = AllStandardObjectName, +> = StandardBuilderArgs<'fieldMetadata'> & { objectName: O; - workspaceId: string; - options: CreateStandardFieldOptions; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; + context: { + fieldName: AllStandardObjectFieldName; + type: Exclude; + label: string; + description: string; + icon: string; + isSystem?: boolean; + isNullable?: boolean; + isUnique?: boolean; + isUIReadOnly?: boolean; + defaultValue?: FieldMetadataDefaultValueForAnyType; + settings?: Record | null; + options?: + | FieldMetadataDefaultOption[] + | FieldMetadataComplexOption[] + | null; + }; }; export const createStandardFieldFlatMetadata = < @@ -44,10 +40,7 @@ export const createStandardFieldFlatMetadata = < >({ objectName, workspaceId, - options, - standardFieldMetadataIdByObjectAndFieldName, -}: CreateStandardFieldArgs): FlatFieldMetadata => { - const { + context: { fieldName, type, label, @@ -60,9 +53,11 @@ export const createStandardFieldFlatMetadata = < defaultValue = null, settings = null, options: fieldOptions = null, - createdAt, - } = options; - + }, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, +}: CreateStandardFieldArgs): FlatFieldMetadata => { const objectFields = STANDARD_OBJECTS[objectName].fields; const fieldDefinition = objectFields[fieldName as keyof typeof objectFields]; const fieldIds = @@ -74,7 +69,7 @@ export const createStandardFieldFlatMetadata = < id: fieldIds[fieldName], universalIdentifier: fieldDefinition.universalIdentifier, standardId: null, - applicationId: TWENTY_STANDARD_APPLICATION_ID, + applicationId: twentyStandardApplicationId, workspaceId, objectMetadataId: standardFieldMetadataIdByObjectAndFieldName[objectName].id, @@ -102,7 +97,7 @@ export const createStandardFieldFlatMetadata = < kanbanAggregateOperationViewIds: [], calendarViewIds: [], mainGroupByFieldMetadataViewIds: [], - createdAt, - updatedAt: createdAt, + createdAt: now, + updatedAt: now, }; }; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util.ts similarity index 79% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util.ts index 3cb2693bff..a915b3b92c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-relation-field-flat-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util.ts @@ -8,15 +8,11 @@ import { import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { TWENTY_STANDARD_APPLICATION } from 'src/engine/workspace-manager/twenty-standard-application/constants/twenty-standard-applications'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { type StandardBuilderArgs } from 'src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type'; -const TWENTY_STANDARD_APPLICATION_ID = - TWENTY_STANDARD_APPLICATION.universalIdentifier; - -export type CreateStandardRelationFieldOptions< +export type CreateStandardRelationFieldContext< O extends AllStandardObjectName, T extends AllStandardObjectName, > = { @@ -32,17 +28,14 @@ export type CreateStandardRelationFieldOptions< defaultValue?: FieldMetadataDefaultValueForAnyType; settings: FieldMetadataSettings; options?: FieldMetadataDefaultOption[] | FieldMetadataComplexOption[] | null; - createdAt: Date; }; export type CreateStandardRelationFieldArgs< O extends AllStandardObjectName, T extends AllStandardObjectName, -> = { +> = StandardBuilderArgs<'fieldMetadata'> & { objectName: O; - workspaceId: string; - options: CreateStandardRelationFieldOptions; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; + context: CreateStandardRelationFieldContext; }; export const createStandardRelationFieldFlatMetadata = < @@ -51,10 +44,7 @@ export const createStandardRelationFieldFlatMetadata = < >({ objectName, workspaceId, - options, - standardFieldMetadataIdByObjectAndFieldName, -}: CreateStandardRelationFieldArgs): FlatFieldMetadata => { - const { + context: { fieldName, label, description, @@ -67,9 +57,11 @@ export const createStandardRelationFieldFlatMetadata = < defaultValue = null, settings, options: fieldOptions = null, - createdAt, - } = options; - + }, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, +}: CreateStandardRelationFieldArgs): FlatFieldMetadata => { const objectFields = STANDARD_OBJECTS[objectName].fields; const fieldDefinition = objectFields[fieldName as keyof typeof objectFields]; const fieldIds = @@ -82,7 +74,7 @@ export const createStandardRelationFieldFlatMetadata = < id: fieldIds[fieldName as keyof typeof fieldIds], universalIdentifier: fieldDefinition.universalIdentifier, standardId: null, - applicationId: TWENTY_STANDARD_APPLICATION_ID, + applicationId: twentyStandardApplicationId, workspaceId, objectMetadataId: standardFieldMetadataIdByObjectAndFieldName[objectName].id, @@ -111,7 +103,7 @@ export const createStandardRelationFieldFlatMetadata = < kanbanAggregateOperationViewIds: [], calendarViewIds: [], mainGroupByFieldMetadataViewIds: [], - createdAt, - updatedAt: createdAt, + createdAt: now, + updatedAt: now, }; }; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/build-standard-flat-index-metadata-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/build-standard-flat-index-metadata-maps.util.ts new file mode 100644 index 0000000000..52ed0e8b87 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/build-standard-flat-index-metadata-maps.util.ts @@ -0,0 +1,80 @@ +import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; +import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; +import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; +import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; +import { buildCompanyStandardFlatIndexMetadatas } from 'src/engine/workspace-manager/twenty-standard-application/utils/index/compute-company-standard-flat-index-metadata.util'; +import { type CreateStandardIndexArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util'; + +const STANDARD_FLAT_INDEX_METADATA_BUILDERS_BY_OBJECT_NAME = { + // attachment: buildAttachmentStandardFlatIndexMetadatas, + // blocklist: buildBlocklistStandardFlatIndexMetadatas, + // calendarChannelEventAssociation: buildCalendarChannelEventAssociationStandardFlatIndexMetadatas, + // calendarChannel: buildCalendarChannelStandardFlatIndexMetadatas, + // calendarEventParticipant: buildCalendarEventParticipantStandardFlatIndexMetadatas, + // calendarEvent: buildCalendarEventStandardFlatIndexMetadatas, + company: buildCompanyStandardFlatIndexMetadatas, + // connectedAccount: buildConnectedAccountStandardFlatIndexMetadatas, + // dashboard: buildDashboardStandardFlatIndexMetadatas, + // favorite: buildFavoriteStandardFlatIndexMetadatas, + // favoriteFolder: buildFavoriteFolderStandardFlatIndexMetadatas, + // message: buildMessageStandardFlatIndexMetadatas, + // messageChannel: buildMessageChannelStandardFlatIndexMetadatas, + // messageChannelMessageAssociation: buildMessageChannelMessageAssociationStandardFlatIndexMetadatas, + // messageFolder: buildMessageFolderStandardFlatIndexMetadatas, + // messageParticipant: buildMessageParticipantStandardFlatIndexMetadatas, + // messageThread: buildMessageThreadStandardFlatIndexMetadatas, + // note: buildNoteStandardFlatIndexMetadatas, + // noteTarget: buildNoteTargetStandardFlatIndexMetadatas, + // opportunity: buildOpportunityStandardFlatIndexMetadatas, + // person: buildPersonStandardFlatIndexMetadatas, + // task: buildTaskStandardFlatIndexMetadatas, + // taskTarget: buildTaskTargetStandardFlatIndexMetadatas, + // timelineActivity: buildTimelineActivityStandardFlatIndexMetadatas, + // workflow: buildWorkflowStandardFlatIndexMetadatas, + // workflowAutomatedTrigger: buildWorkflowAutomatedTriggerStandardFlatIndexMetadatas, + // workflowRun: buildWorkflowRunStandardFlatIndexMetadatas, + // workflowVersion: buildWorkflowVersionStandardFlatIndexMetadatas, + // workspaceMember: buildWorkspaceMemberStandardFlatIndexMetadatas, +} satisfies { + [P in AllStandardObjectName]?: ( + args: CreateStandardIndexArgs

, + ) => Record; +}; + +const createEmptyFlatIndexMetadataMaps = + (): FlatEntityMaps => ({ + byId: {}, + idByUniversalIdentifier: {}, + universalIdentifiersByApplicationId: {}, + }); + +export const buildStandardFlatIndexMetadataMaps = ( + args: Omit, +): FlatEntityMaps => { + const allIndexMetadatas: FlatIndexMetadata[] = ( + Object.keys( + STANDARD_FLAT_INDEX_METADATA_BUILDERS_BY_OBJECT_NAME, + ) as (keyof typeof STANDARD_FLAT_INDEX_METADATA_BUILDERS_BY_OBJECT_NAME)[] + ).flatMap((objectName) => { + const builder = + STANDARD_FLAT_INDEX_METADATA_BUILDERS_BY_OBJECT_NAME[objectName]; + + const result = builder({ + ...args, + objectName, + }); + + return Object.values(result); + }); + + let flatIndexMetadataMaps = createEmptyFlatIndexMetadataMaps(); + + for (const indexMetadata of allIndexMetadatas) { + flatIndexMetadataMaps = addFlatEntityToFlatEntityMapsOrThrow({ + flatEntity: indexMetadata, + flatEntityMaps: flatIndexMetadataMaps, + }); + } + + return flatIndexMetadataMaps; +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/compute-company-standard-flat-index-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/compute-company-standard-flat-index-metadata.util.ts new file mode 100644 index 0000000000..7fc810e22a --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/compute-company-standard-flat-index-metadata.util.ts @@ -0,0 +1,58 @@ +import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; +import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; +import { type AllStandardObjectIndexName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-index-name.type'; +import { + type CreateStandardIndexArgs, + createStandardIndexFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util'; + +export const buildCompanyStandardFlatIndexMetadatas = ({ + now, + objectName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, +}: Omit, 'context'>): Record< + AllStandardObjectIndexName<'company'>, + FlatIndexMetadata +> => ({ + accountOwnerIdIndex: createStandardIndexFlatMetadata({ + objectName, + workspaceId, + context: { + indexName: 'accountOwnerIdIndex', + relatedFieldNames: ['accountOwner'], + }, + standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, + }), + domainNameUniqueIndex: createStandardIndexFlatMetadata({ + objectName, + workspaceId, + context: { + indexName: 'domainNameUniqueIndex', + relatedFieldNames: ['domainName'], + isUnique: true, + }, + standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, + }), + searchVectorGinIndex: createStandardIndexFlatMetadata({ + objectName, + workspaceId, + context: { + indexName: 'searchVectorGinIndex', + relatedFieldNames: ['searchVector'], + indexType: IndexType.GIN, + }, + standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps, + twentyStandardApplicationId, + now, + }), +}); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts new file mode 100644 index 0000000000..693a3872e4 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts @@ -0,0 +1,106 @@ +import { isDefined } from 'twenty-shared/utils'; +import { v4 } from 'uuid'; + +import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; +import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; +import { + type FlatIndexFieldMetadata, + type FlatIndexMetadata, +} from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; +import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; +import { generateFlatIndexMetadataWithNameOrThrow } from 'src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util'; +import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; +import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; +import { type AllStandardObjectIndexName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-index-name.type'; +import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; +import { type StandardBuilderArgs } from 'src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type'; + +export type CreateStandardIndexOptions = { + indexName: AllStandardObjectIndexName; + relatedFieldNames: AllStandardObjectFieldName[]; +} & Partial< + Pick +>; + +export type CreateStandardIndexArgs< + O extends AllStandardObjectName = AllStandardObjectName, +> = StandardBuilderArgs<'index'> & { + objectName: O; + context: CreateStandardIndexOptions; +}; + +export const createStandardIndexFlatMetadata = < + O extends AllStandardObjectName, +>({ + workspaceId, + objectName, + context: { + indexName, + relatedFieldNames, + indexType = IndexType.BTREE, + indexWhereClause = null, + isUnique = false, + }, + standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps: { flatFieldMetadataMaps, flatObjectMetadataMaps }, + twentyStandardApplicationId, + now, +}: CreateStandardIndexArgs): FlatIndexMetadata => { + const objectIndexes = STANDARD_OBJECTS[objectName].indexes; + + if (!isDefined(objectIndexes)) { + throw new Error( + `Invalid index configuration ${objectName} ${indexName.toString()}`, + ); + } + // @ts-expect-error ignore + const indexDefinition = objectIndexes[indexName] as unknown as { + universalIdentifier: string; + }; + + const objectMetadataId = + standardFieldMetadataIdByObjectAndFieldName[objectName].id; + const flatObjectMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow({ + flatEntityId: objectMetadataId, + flatEntityMaps: flatObjectMetadataMaps, + }); + + const relatedFieldIds = relatedFieldNames.map( + (fieldName) => + standardFieldMetadataIdByObjectAndFieldName[objectName].fields[fieldName], + ); + const flatFieldMetadatas = findManyFlatEntityByIdInFlatEntityMapsOrThrow({ + flatEntityIds: relatedFieldIds, + flatEntityMaps: flatFieldMetadataMaps, + }); + + const indexId = v4(); + + return generateFlatIndexMetadataWithNameOrThrow({ + flatIndex: { + createdAt: now, + applicationId: twentyStandardApplicationId, + indexType, + indexWhereClause, + isCustom: false, + isUnique, + objectMetadataId, + universalIdentifier: indexDefinition.universalIdentifier, + updatedAt: now, + workspaceId, + id: indexId, + flatIndexFieldMetadatas: flatFieldMetadatas.map( + ({ id: fieldMetadataId }, index) => ({ + createdAt: now, + fieldMetadataId, + id: v4(), + indexMetadataId: indexId, + order: index, + updatedAt: now, + }), + ), + }, + flatObjectMetadata, + objectFlatFieldMetadatas: flatFieldMetadatas, + }); +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/build-standard-flat-object-metadata-maps.util.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-object-metadata-maps.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/build-standard-flat-object-metadata-maps.util.ts index 2059ba6e30..1282469b2e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-object-metadata-maps.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/build-standard-flat-object-metadata-maps.util.ts @@ -1,10 +1,8 @@ import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { - type BuildStandardFlatObjectMetadatasArgs, - STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME, -} from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-flat-object-metadata.util'; +import { STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME } from 'src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util'; +import { type CreateStandardObjectArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util'; const createEmptyFlatObjectMetadataMaps = (): FlatEntityMaps => ({ @@ -14,7 +12,7 @@ const createEmptyFlatObjectMetadataMaps = }); export const buildStandardFlatObjectMetadataMaps = ( - args: BuildStandardFlatObjectMetadatasArgs, + args: Omit, ): FlatEntityMaps => { // Collect all object metadatas from all standard objects const allObjectMetadatas: FlatObjectMetadata[] = Object.values( diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-flat-object-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-flat-object-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts index b9d524930a..b018e4c5b2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-flat-object-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts @@ -1,23 +1,23 @@ import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; -import { createStandardObjectFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/create-standard-object-flat-metadata.util'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; - -export type BuildStandardFlatObjectMetadatasArgs = { - createdAt: Date; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}; - -export type StandardFlatObjectMetadataBuilder = ( - args: BuildStandardFlatObjectMetadatasArgs, -) => FlatObjectMetadata; +import { + type CreateStandardObjectArgs, + createStandardObjectFlatMetadata, +} from 'src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util'; export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { - attachment: (args: BuildStandardFlatObjectMetadatasArgs) => + attachment: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'attachment', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.attachment.universalIdentifier, standardId: STANDARD_OBJECTS.attachment.universalIdentifier, nameSingular: 'attachment', @@ -27,16 +27,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'An attachment', icon: 'IconFileImport', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - blocklist: (args: BuildStandardFlatObjectMetadatasArgs) => + blocklist: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'blocklist', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.blocklist.universalIdentifier, standardId: STANDARD_OBJECTS.blocklist.universalIdentifier, nameSingular: 'blocklist', @@ -46,18 +54,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'Blocklist', icon: 'IconForbid2', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'handle', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - calendarChannelEventAssociation: ( - args: BuildStandardFlatObjectMetadatasArgs, - ) => + calendarChannelEventAssociation: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'calendarChannelEventAssociation'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'calendarChannelEventAssociation', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.calendarChannelEventAssociation.universalIdentifier, standardId: @@ -70,16 +87,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconCalendar', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - calendarChannel: (args: BuildStandardFlatObjectMetadatasArgs) => + calendarChannel: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'calendarChannel'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'calendarChannel', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.calendarChannel.universalIdentifier, standardId: STANDARD_OBJECTS.calendarChannel.universalIdentifier, @@ -91,16 +119,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconCalendar', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'handle', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - calendarEventParticipant: (args: BuildStandardFlatObjectMetadatasArgs) => + calendarEventParticipant: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'calendarEventParticipant'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'calendarEventParticipant', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.calendarEventParticipant.universalIdentifier, standardId: @@ -113,16 +152,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconCalendar', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'handle', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - calendarEvent: (args: BuildStandardFlatObjectMetadatasArgs) => + calendarEvent: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'calendarEvent'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'calendarEvent', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.calendarEvent.universalIdentifier, standardId: STANDARD_OBJECTS.calendarEvent.universalIdentifier, nameSingular: 'calendarEvent', @@ -134,16 +184,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { isSystem: true, isAuditLogged: false, isUIReadOnly: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'title', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - company: (args: BuildStandardFlatObjectMetadatasArgs) => + company: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'company', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.company.universalIdentifier, standardId: STANDARD_OBJECTS.company.universalIdentifier, nameSingular: 'company', @@ -154,16 +212,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconBuildingSkyscraper', isSearchable: true, shortcut: 'C', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - connectedAccount: (args: BuildStandardFlatObjectMetadatasArgs) => + connectedAccount: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'connectedAccount'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'connectedAccount', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.connectedAccount.universalIdentifier, standardId: STANDARD_OBJECTS.connectedAccount.universalIdentifier, @@ -175,16 +244,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconAt', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'handle', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - dashboard: (args: BuildStandardFlatObjectMetadatasArgs) => + dashboard: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'dashboard', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.dashboard.universalIdentifier, standardId: STANDARD_OBJECTS.dashboard.universalIdentifier, nameSingular: 'dashboard', @@ -195,16 +272,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconLayoutDashboard', isSearchable: true, shortcut: 'D', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'title', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - favorite: (args: BuildStandardFlatObjectMetadatasArgs) => + favorite: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'favorite', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.favorite.universalIdentifier, standardId: STANDARD_OBJECTS.favorite.universalIdentifier, nameSingular: 'favorite', @@ -214,16 +299,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A favorite', icon: 'IconHeart', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - favoriteFolder: (args: BuildStandardFlatObjectMetadatasArgs) => + favoriteFolder: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'favoriteFolder'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'favoriteFolder', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.favoriteFolder.universalIdentifier, standardId: STANDARD_OBJECTS.favoriteFolder.universalIdentifier, @@ -234,18 +330,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A favorite folder', icon: 'IconFolder', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - messageChannelMessageAssociation: ( - args: BuildStandardFlatObjectMetadatasArgs, - ) => + messageChannelMessageAssociation: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'messageChannelMessageAssociation'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'messageChannelMessageAssociation', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.messageChannelMessageAssociation.universalIdentifier, standardId: @@ -258,16 +363,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconMessage', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - messageChannel: (args: BuildStandardFlatObjectMetadatasArgs) => + messageChannel: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'messageChannel'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'messageChannel', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.messageChannel.universalIdentifier, standardId: STANDARD_OBJECTS.messageChannel.universalIdentifier, @@ -279,16 +395,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconMessage', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'handle', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - messageFolder: (args: BuildStandardFlatObjectMetadatasArgs) => + messageFolder: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'messageFolder'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'messageFolder', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.messageFolder.universalIdentifier, standardId: STANDARD_OBJECTS.messageFolder.universalIdentifier, nameSingular: 'messageFolder', @@ -299,16 +426,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconFolder', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - messageParticipant: (args: BuildStandardFlatObjectMetadatasArgs) => + messageParticipant: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'messageParticipant'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'messageParticipant', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.messageParticipant.universalIdentifier, standardId: STANDARD_OBJECTS.messageParticipant.universalIdentifier, @@ -320,16 +458,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconUserCircle', isSystem: true, isAuditLogged: false, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'handle', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - messageThread: (args: BuildStandardFlatObjectMetadatasArgs) => + messageThread: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'messageThread'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'messageThread', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.messageThread.universalIdentifier, standardId: STANDARD_OBJECTS.messageThread.universalIdentifier, nameSingular: 'messageThread', @@ -341,16 +490,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { isSystem: true, isAuditLogged: false, isUIReadOnly: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - message: (args: BuildStandardFlatObjectMetadatasArgs) => + message: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'message', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.message.universalIdentifier, standardId: STANDARD_OBJECTS.message.universalIdentifier, nameSingular: 'message', @@ -362,16 +519,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { isSystem: true, isAuditLogged: false, isUIReadOnly: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'subject', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - note: (args: BuildStandardFlatObjectMetadatasArgs) => + note: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'note', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.note.universalIdentifier, standardId: STANDARD_OBJECTS.note.universalIdentifier, nameSingular: 'note', @@ -382,16 +547,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconNotes', isSearchable: true, shortcut: 'N', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'title', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - noteTarget: (args: BuildStandardFlatObjectMetadatasArgs) => + noteTarget: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'noteTarget', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.noteTarget.universalIdentifier, standardId: STANDARD_OBJECTS.noteTarget.universalIdentifier, nameSingular: 'noteTarget', @@ -401,16 +574,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A note target', icon: 'IconCheckbox', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - opportunity: (args: BuildStandardFlatObjectMetadatasArgs) => + opportunity: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'opportunity', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.opportunity.universalIdentifier, standardId: STANDARD_OBJECTS.opportunity.universalIdentifier, nameSingular: 'opportunity', @@ -421,16 +602,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconTargetArrow', isSearchable: true, shortcut: 'O', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - person: (args: BuildStandardFlatObjectMetadatasArgs) => + person: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'person', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.person.universalIdentifier, standardId: STANDARD_OBJECTS.person.universalIdentifier, nameSingular: 'person', @@ -441,16 +630,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconUser', isSearchable: true, shortcut: 'P', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - task: (args: BuildStandardFlatObjectMetadatasArgs) => + task: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'task', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.task.universalIdentifier, standardId: STANDARD_OBJECTS.task.universalIdentifier, nameSingular: 'task', @@ -461,16 +658,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconCheckbox', isSearchable: true, shortcut: 'T', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'title', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - taskTarget: (args: BuildStandardFlatObjectMetadatasArgs) => + taskTarget: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'taskTarget', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.taskTarget.universalIdentifier, standardId: STANDARD_OBJECTS.taskTarget.universalIdentifier, nameSingular: 'taskTarget', @@ -480,16 +685,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A task target', icon: 'IconCheckbox', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - timelineActivity: (args: BuildStandardFlatObjectMetadatasArgs) => + timelineActivity: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'timelineActivity'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'timelineActivity', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.timelineActivity.universalIdentifier, standardId: STANDARD_OBJECTS.timelineActivity.universalIdentifier, @@ -501,16 +717,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { 'Aggregated / filtered event to be displayed on the timeline', icon: 'IconTimelineEvent', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - workflow: (args: BuildStandardFlatObjectMetadatasArgs) => + workflow: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'workflow', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.workflow.universalIdentifier, standardId: STANDARD_OBJECTS.workflow.universalIdentifier, nameSingular: 'workflow', @@ -521,16 +745,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { icon: 'IconSettingsAutomation', isSearchable: true, shortcut: 'W', - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - workflowAutomatedTrigger: (args: BuildStandardFlatObjectMetadatasArgs) => + workflowAutomatedTrigger: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'workflowAutomatedTrigger'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'workflowAutomatedTrigger', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.workflowAutomatedTrigger.universalIdentifier, standardId: @@ -542,16 +777,24 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A workflow automated trigger', icon: 'IconSettingsAutomation', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'id', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - workflowRun: (args: BuildStandardFlatObjectMetadatasArgs) => + workflowRun: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit, 'context' | 'objectName'>) => createStandardObjectFlatMetadata({ - options: { + objectName: 'workflowRun', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.workflowRun.universalIdentifier, standardId: STANDARD_OBJECTS.workflowRun.universalIdentifier, nameSingular: 'workflowRun', @@ -561,16 +804,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A workflow run', icon: 'IconHistoryToggle', isSearchable: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - workflowVersion: (args: BuildStandardFlatObjectMetadatasArgs) => + workflowVersion: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'workflowVersion'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'workflowVersion', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.workflowVersion.universalIdentifier, standardId: STANDARD_OBJECTS.workflowVersion.universalIdentifier, @@ -581,16 +835,27 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A workflow version', icon: 'IconVersions', isSearchable: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), - workspaceMember: (args: BuildStandardFlatObjectMetadatasArgs) => + workspaceMember: ({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + dependencyFlatEntityMaps, + }: Omit< + CreateStandardObjectArgs<'workspaceMember'>, + 'context' | 'objectName' + >) => createStandardObjectFlatMetadata({ - options: { + objectName: 'workspaceMember', + dependencyFlatEntityMaps, + context: { universalIdentifier: STANDARD_OBJECTS.workspaceMember.universalIdentifier, standardId: STANDARD_OBJECTS.workspaceMember.universalIdentifier, @@ -601,11 +866,15 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = { description: 'A workspace member', icon: 'IconUserCircle', isSystem: true, - createdAt: args.createdAt, labelIdentifierFieldMetadataName: 'name', }, - workspaceId: args.workspaceId, - standardFieldMetadataIdByObjectAndFieldName: - args.standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + twentyStandardApplicationId, + now, }), -} satisfies Record; +} satisfies { + [P in AllStandardObjectName]: ( + args: Omit, 'context' | 'objectName'>, + ) => FlatObjectMetadata; +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-object-flat-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts similarity index 56% rename from packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-object-flat-metadata.util.ts rename to packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts index fc2910ab02..8304bef00e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/create-standard-object-flat-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts @@ -1,16 +1,36 @@ import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { TWENTY_STANDARD_APPLICATION } from 'src/engine/workspace-manager/twenty-standard-application/constants/twenty-standard-applications'; import { type AllStandardObjectFieldName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-field-name.type'; import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type'; -import { type StandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { type StandardBuilderArgs } from 'src/engine/workspace-manager/twenty-standard-application/types/metadata-standard-buillder-args.type'; -const TWENTY_STANDARD_APPLICATION_ID = - TWENTY_STANDARD_APPLICATION.universalIdentifier; +export type CreateStandardObjectContext = { + universalIdentifier: string; + standardId: string; + nameSingular: O; + namePlural: string; + labelSingular: string; + labelPlural: string; + description: string; + icon: string; + isSystem?: boolean; + isSearchable?: boolean; + isAuditLogged?: boolean; + isUIReadOnly?: boolean; + shortcut?: string | null; + labelIdentifierFieldMetadataName: AllStandardObjectFieldName; +}; + +export type CreateStandardObjectArgs< + O extends AllStandardObjectName = AllStandardObjectName, +> = StandardBuilderArgs<'objectMetadata'> & { + objectName: O; + context: CreateStandardObjectContext; +}; export const createStandardObjectFlatMetadata = < - T extends AllStandardObjectName, + O extends AllStandardObjectName, >({ - options: { + context: { universalIdentifier, standardId, nameSingular, @@ -24,35 +44,16 @@ export const createStandardObjectFlatMetadata = < isAuditLogged = true, isUIReadOnly = false, shortcut = null, - createdAt, labelIdentifierFieldMetadataName, }, workspaceId, standardFieldMetadataIdByObjectAndFieldName, -}: { - options: { - universalIdentifier: string; - standardId: string; - nameSingular: T; - namePlural: string; - labelSingular: string; - labelPlural: string; - description: string; - icon: string; - isSystem?: boolean; - isSearchable?: boolean; - isAuditLogged?: boolean; - isUIReadOnly?: boolean; - shortcut?: string | null; - createdAt: Date; - labelIdentifierFieldMetadataName: AllStandardObjectFieldName; - }; - workspaceId: string; - standardFieldMetadataIdByObjectAndFieldName: StandardFieldMetadataIdByObjectAndFieldName; -}): FlatObjectMetadata => ({ + twentyStandardApplicationId, + now, +}: CreateStandardObjectArgs): FlatObjectMetadata => ({ universalIdentifier, standardId, - applicationId: TWENTY_STANDARD_APPLICATION_ID, + applicationId: twentyStandardApplicationId, workspaceId, nameSingular, namePlural, @@ -80,7 +81,7 @@ export const createStandardObjectFlatMetadata = < fieldMetadataIds: [], indexMetadataIds: [], viewIds: [], - createdAt, - updatedAt: createdAt, + createdAt: now, + updatedAt: now, id: standardFieldMetadataIdByObjectAndFieldName[nameSingular].id, }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts index e3034e2f5f..446b790788 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts @@ -1,30 +1,54 @@ +import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; -import { buildStandardFlatFieldMetadataMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-field-metadata-maps.util'; -import { buildStandardFlatObjectMetadataMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/build-standard-flat-object-metadata-maps.util'; +import { buildStandardFlatFieldMetadataMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/build-standard-flat-field-metadata-maps.util'; import { getStandardFieldMetadataIdByObjectAndFieldName } from 'src/engine/workspace-manager/twenty-standard-application/utils/get-standard-field-metadata-id-by-object-and-field-name.util'; +import { buildStandardFlatIndexMetadataMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/index/build-standard-flat-index-metadata-maps.util'; +import { buildStandardFlatObjectMetadataMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/build-standard-flat-object-metadata-maps.util'; + +export type ComputeTwentyStandardApplicationAllFlatEntityMapsArgs = { + now: Date; + workspaceId: string; + twentyStandardApplicationId: string; +}; export const computeTwentyStandardApplicationAllFlatEntityMaps = ({ - createdAt, + now, workspaceId, -}: { - createdAt: Date; - workspaceId: string; -}): AllFlatEntityMaps => { + twentyStandardApplicationId, +}: ComputeTwentyStandardApplicationAllFlatEntityMapsArgs): AllFlatEntityMaps => { const standardFieldMetadataIdByObjectAndFieldName = getStandardFieldMetadataIdByObjectAndFieldName(); - const builderArgs = { - createdAt, + const flatObjectMetadataMaps = buildStandardFlatObjectMetadataMaps({ + now, workspaceId, standardFieldMetadataIdByObjectAndFieldName, - }; + twentyStandardApplicationId, + dependencyFlatEntityMaps: { + flatFieldMetadataMaps: createEmptyFlatEntityMaps(), + }, + }); - // Build object metadata maps using addFlatEntityToFlatEntityMapsOrThrow to prevent duplicate IDs - const flatObjectMetadataMaps = - buildStandardFlatObjectMetadataMaps(builderArgs); + const flatFieldMetadataMaps = buildStandardFlatFieldMetadataMaps({ + now, + workspaceId, + standardFieldMetadataIdByObjectAndFieldName, + dependencyFlatEntityMaps: { + flatObjectMetadataMaps, + }, + twentyStandardApplicationId, + }); - // Build field metadata maps using addFlatEntityToFlatEntityMapsOrThrow to prevent duplicate IDs - const flatFieldMetadataMaps = buildStandardFlatFieldMetadataMaps(builderArgs); + const flatIndexMaps = buildStandardFlatIndexMetadataMaps({ + dependencyFlatEntityMaps: { + flatFieldMetadataMaps, + flatObjectMetadataMaps, + }, + now, + standardFieldMetadataIdByObjectAndFieldName, + workspaceId, + twentyStandardApplicationId, + }); return { flatAgentMaps: { @@ -43,11 +67,7 @@ export const computeTwentyStandardApplicationAllFlatEntityMaps = ({ universalIdentifiersByApplicationId: {}, }, flatFieldMetadataMaps, - flatIndexMaps: { - byId: {}, - idByUniversalIdentifier: {}, - universalIdentifiersByApplicationId: {}, - }, + flatIndexMaps, flatObjectMetadataMaps, flatRoleMaps: { byId: {},