From 4f1302277403d56cad443bdcf48e3c68a0feb341 Mon Sep 17 00:00:00 2001
From: Paul Rastoin <45004772+prastoin@users.noreply.github.com>
Date: Wed, 10 Dec 2025 16:44:20 +0100
Subject: [PATCH] Remaining standard view, view filter/group/field (#16466)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
# Introduction
Following https://github.com/twentyhq/twenty/pull/16436
Related https://github.com/twentyhq/core-team-issues/issues/1995
## Objects
### 1. **Task** 📋
- **3 Views**: allTasks, byStatus, assignedToMe
- **20 View Fields** across all views
- **7 View Groups**: 4 for assignedToMe (TODO, IN_PROGRESS, DONE,
empty), 3 for byStatus
- **1 View Filter**: assigneeIsMe
### 2. **Opportunity** 💼
- **2 Views**: allOpportunities, byStage (kanban with MIN aggregation)
- **12 View Fields** (6 per view)
- **5 View Groups**: NEW, SCREENING, MEETING, PROPOSAL, CUSTOMER
### 3. **Company** 🏢
- **1 View**: allCompanies
- **8 View Fields** (includes COUNT, MAX, PERCENTAGE_EMPTY aggregations)
### 4. **Person** 👤
- **1 View**: allPeople
- **10 View Fields** (includes COUNT_UNIQUE_VALUES, PERCENTAGE_EMPTY,
MIN aggregations)
### 5. **Note** 📝
- **1 View**: allNotes
- **5 View Fields**
### 6. **Message** 📧
- **1 View**: allMessages
- **7 View Fields**
### 7. **Message Thread** 💬
- **1 View**: allMessageThreads
- **2 View Fields**
### 8. **Calendar Event** 📅
- **1 View**: allCalendarEvents (with calendar field: startsAt)
- **8 View Fields**
### 9. **Workflow** ⚙️
- **1 View**: allWorkflows
- **6 View Fields**
### 10. **Workflow Run** 🏃
- **1 View**: allWorkflowRuns
- **3 View Fields**
### 11. **Dashboard** 📊
- **1 View**: allDashboards
- **4 View Fields**
---
---
...dard-flat-view-field-metadata-maps.util.ts | 20 +++
...tandard-calendar-event-view-fields.util.ts | 108 ++++++++++++
...mpute-standard-company-view-fields.util.ts | 113 ++++++++++++
...ute-standard-dashboard-view-fields.util.ts | 60 +++++++
...tandard-message-thread-view-fields.util.ts | 36 ++++
...mpute-standard-message-view-fields.util.ts | 96 +++++++++++
.../compute-standard-note-view-fields.util.ts | 72 ++++++++
...e-standard-opportunity-view-fields.util.ts | 162 ++++++++++++++++++
...ompute-standard-person-view-fields.util.ts | 136 +++++++++++++++
...-standard-workflow-run-view-fields.util.ts | 48 ++++++
...pute-standard-workflow-view-fields.util.ts | 84 +++++++++
...dard-flat-view-group-metadata-maps.util.ts | 2 +
...e-standard-opportunity-view-groups.util.ts | 72 ++++++++
...d-standard-flat-view-metadata-maps.util.ts | 20 +++
...pute-standard-calendar-event-views.util.ts | 27 +++
.../compute-standard-company-views.util.ts | 26 +++
.../compute-standard-dashboard-views.util.ts | 26 +++
...pute-standard-message-thread-views.util.ts | 26 +++
.../compute-standard-message-views.util.ts | 26 +++
.../view/compute-standard-note-views.util.ts | 26 +++
...compute-standard-opportunity-views.util.ts | 42 +++++
.../compute-standard-person-views.util.ts | 26 +++
...ompute-standard-workflow-run-views.util.ts | 26 +++
.../compute-standard-workflow-views.util.ts | 26 +++
24 files changed, 1306 insertions(+)
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-calendar-event-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-company-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-dashboard-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-thread-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-note-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-opportunity-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-person-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-run-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-view-fields.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/compute-standard-opportunity-view-groups.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-calendar-event-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-company-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-dashboard-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-thread-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-note-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-opportunity-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-person-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-run-views.util.ts
create mode 100644 packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-views.util.ts
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/build-standard-flat-view-field-metadata-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/build-standard-flat-view-field-metadata-maps.util.ts
index 677b50b98a..3bc7440aa7 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/build-standard-flat-view-field-metadata-maps.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/build-standard-flat-view-field-metadata-maps.util.ts
@@ -3,7 +3,17 @@ 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 FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type';
+import { computeStandardCalendarEventViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-calendar-event-view-fields.util';
+import { computeStandardCompanyViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-company-view-fields.util';
+import { computeStandardDashboardViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-dashboard-view-fields.util';
+import { computeStandardMessageThreadViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-thread-view-fields.util';
+import { computeStandardMessageViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-view-fields.util';
+import { computeStandardNoteViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-note-view-fields.util';
+import { computeStandardOpportunityViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-opportunity-view-fields.util';
+import { computeStandardPersonViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-person-view-fields.util';
import { computeStandardTaskViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-task-view-fields.util';
+import { computeStandardWorkflowRunViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-run-view-fields.util';
+import { computeStandardWorkflowViewFields } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-view-fields.util';
import { type CreateStandardViewFieldArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
type StandardViewFieldBuilder
= (
@@ -11,7 +21,17 @@ type StandardViewFieldBuilder
= (
) => Record;
const STANDARD_FLAT_VIEW_FIELD_METADATA_BUILDERS_BY_OBJECT_NAME = {
+ calendarEvent: computeStandardCalendarEventViewFields,
+ company: computeStandardCompanyViewFields,
+ dashboard: computeStandardDashboardViewFields,
+ message: computeStandardMessageViewFields,
+ messageThread: computeStandardMessageThreadViewFields,
+ note: computeStandardNoteViewFields,
+ opportunity: computeStandardOpportunityViewFields,
+ person: computeStandardPersonViewFields,
task: computeStandardTaskViewFields,
+ workflow: computeStandardWorkflowViewFields,
+ workflowRun: computeStandardWorkflowRunViewFields,
} as const satisfies {
[P in AllStandardObjectName]?: StandardViewFieldBuilder;
};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-calendar-event-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-calendar-event-view-fields.util.ts
new file mode 100644
index 0000000000..2e664c92f9
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-calendar-event-view-fields.util.ts
@@ -0,0 +1,108 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardCalendarEventViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allCalendarEventsTitle: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'title',
+ fieldName: 'title',
+ position: 0,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCalendarEventsStartsAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'startsAt',
+ fieldName: 'startsAt',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCalendarEventsEndsAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'endsAt',
+ fieldName: 'endsAt',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCalendarEventsIsFullDay: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'isFullDay',
+ fieldName: 'isFullDay',
+ position: 3,
+ isVisible: true,
+ size: 100,
+ },
+ }),
+ allCalendarEventsLocation: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'location',
+ fieldName: 'location',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCalendarEventsConferenceLink: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'conferenceLink',
+ fieldName: 'conferenceLink',
+ position: 5,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCalendarEventsIsCanceled: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'isCanceled',
+ fieldName: 'isCanceled',
+ position: 6,
+ isVisible: true,
+ size: 100,
+ },
+ }),
+ allCalendarEventsCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 7,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-company-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-company-view-fields.util.ts
new file mode 100644
index 0000000000..fa9e788984
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-company-view-fields.util.ts
@@ -0,0 +1,113 @@
+import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardCompanyViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allCompaniesName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'name',
+ fieldName: 'name',
+ position: 0,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCompaniesDomainName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'domainName',
+ fieldName: 'domainName',
+ position: 1,
+ isVisible: true,
+ size: 100,
+ aggregateOperation: AggregateOperations.COUNT,
+ },
+ }),
+ allCompaniesCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCompaniesAccountOwner: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'accountOwner',
+ fieldName: 'accountOwner',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCompaniesCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allCompaniesEmployees: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'employees',
+ fieldName: 'employees',
+ position: 5,
+ isVisible: true,
+ size: 150,
+ aggregateOperation: AggregateOperations.MAX,
+ },
+ }),
+ allCompaniesLinkedinLink: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'linkedinLink',
+ fieldName: 'linkedinLink',
+ position: 6,
+ isVisible: true,
+ size: 170,
+ aggregateOperation: AggregateOperations.PERCENTAGE_EMPTY,
+ },
+ }),
+ allCompaniesAddress: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ viewFieldName: 'address',
+ fieldName: 'address',
+ position: 7,
+ isVisible: true,
+ size: 170,
+ aggregateOperation: AggregateOperations.COUNT_NOT_EMPTY,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-dashboard-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-dashboard-view-fields.util.ts
new file mode 100644
index 0000000000..518fde46a3
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-dashboard-view-fields.util.ts
@@ -0,0 +1,60 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardDashboardViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allDashboardsTitle: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'dashboard',
+ context: {
+ viewName: 'allDashboards',
+ viewFieldName: 'title',
+ fieldName: 'title',
+ position: 0,
+ isVisible: true,
+ size: 210,
+ },
+ }),
+ allDashboardsCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'dashboard',
+ context: {
+ viewName: 'allDashboards',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allDashboardsCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'dashboard',
+ context: {
+ viewName: 'allDashboards',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allDashboardsUpdatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'dashboard',
+ context: {
+ viewName: 'allDashboards',
+ viewFieldName: 'updatedAt',
+ fieldName: 'updatedAt',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-thread-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-thread-view-fields.util.ts
new file mode 100644
index 0000000000..97fabbbe39
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-thread-view-fields.util.ts
@@ -0,0 +1,36 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardMessageThreadViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allMessageThreadsMessages: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'messageThread',
+ context: {
+ viewName: 'allMessageThreads',
+ viewFieldName: 'messages',
+ fieldName: 'messages',
+ position: 0,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allMessageThreadsCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'messageThread',
+ context: {
+ viewName: 'allMessageThreads',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-view-fields.util.ts
new file mode 100644
index 0000000000..91dba9a062
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-message-view-fields.util.ts
@@ -0,0 +1,96 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardMessageViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allMessagesSubject: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'subject',
+ fieldName: 'subject',
+ position: 0,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allMessagesMessageThread: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'messageThread',
+ fieldName: 'messageThread',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allMessagesMessageParticipants: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'messageParticipants',
+ fieldName: 'messageParticipants',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allMessagesReceivedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'receivedAt',
+ fieldName: 'receivedAt',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allMessagesHeaderMessageId: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'headerMessageId',
+ fieldName: 'headerMessageId',
+ position: 4,
+ isVisible: true,
+ size: 180,
+ },
+ }),
+ allMessagesText: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'text',
+ fieldName: 'text',
+ position: 5,
+ isVisible: true,
+ size: 200,
+ },
+ }),
+ allMessagesCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 6,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-note-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-note-view-fields.util.ts
new file mode 100644
index 0000000000..ddedc184e4
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-note-view-fields.util.ts
@@ -0,0 +1,72 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardNoteViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allNotesTitle: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'note',
+ context: {
+ viewName: 'allNotes',
+ viewFieldName: 'title',
+ fieldName: 'title',
+ position: 0,
+ isVisible: true,
+ size: 210,
+ },
+ }),
+ allNotesNoteTargets: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'note',
+ context: {
+ viewName: 'allNotes',
+ viewFieldName: 'noteTargets',
+ fieldName: 'noteTargets',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allNotesBodyV2: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'note',
+ context: {
+ viewName: 'allNotes',
+ viewFieldName: 'bodyV2',
+ fieldName: 'bodyV2',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allNotesCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'note',
+ context: {
+ viewName: 'allNotes',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allNotesCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'note',
+ context: {
+ viewName: 'allNotes',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-opportunity-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-opportunity-view-fields.util.ts
new file mode 100644
index 0000000000..eae3a5a993
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-opportunity-view-fields.util.ts
@@ -0,0 +1,162 @@
+import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardOpportunityViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ // allOpportunities view fields
+ allOpportunitiesName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ viewFieldName: 'name',
+ fieldName: 'name',
+ position: 0,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allOpportunitiesAmount: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ viewFieldName: 'amount',
+ fieldName: 'amount',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ aggregateOperation: AggregateOperations.AVG,
+ },
+ }),
+ allOpportunitiesCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allOpportunitiesCloseDate: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ viewFieldName: 'closeDate',
+ fieldName: 'closeDate',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ aggregateOperation: AggregateOperations.MIN,
+ },
+ }),
+ allOpportunitiesCompany: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ viewFieldName: 'company',
+ fieldName: 'company',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allOpportunitiesPointOfContact: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ viewFieldName: 'pointOfContact',
+ fieldName: 'pointOfContact',
+ position: 5,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+
+ // byStage view fields
+ byStageName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewFieldName: 'name',
+ fieldName: 'name',
+ position: 0,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ byStageAmount: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewFieldName: 'amount',
+ fieldName: 'amount',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ byStageCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ byStageCloseDate: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewFieldName: 'closeDate',
+ fieldName: 'closeDate',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ byStageCompany: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewFieldName: 'company',
+ fieldName: 'company',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ byStagePointOfContact: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewFieldName: 'pointOfContact',
+ fieldName: 'pointOfContact',
+ position: 5,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-person-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-person-view-fields.util.ts
new file mode 100644
index 0000000000..bf98a8f245
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-person-view-fields.util.ts
@@ -0,0 +1,136 @@
+import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardPersonViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allPeopleName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'name',
+ fieldName: 'name',
+ position: 0,
+ isVisible: true,
+ size: 210,
+ },
+ }),
+ allPeopleEmails: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'emails',
+ fieldName: 'emails',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ aggregateOperation: AggregateOperations.COUNT_UNIQUE_VALUES,
+ },
+ }),
+ allPeopleCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allPeopleCompany: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'company',
+ fieldName: 'company',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allPeoplePhones: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'phones',
+ fieldName: 'phones',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ aggregateOperation: AggregateOperations.PERCENTAGE_EMPTY,
+ },
+ }),
+ allPeopleCreatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'createdAt',
+ fieldName: 'createdAt',
+ position: 5,
+ isVisible: true,
+ size: 150,
+ aggregateOperation: AggregateOperations.MIN,
+ },
+ }),
+ allPeopleCity: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'city',
+ fieldName: 'city',
+ position: 6,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allPeopleJobTitle: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'jobTitle',
+ fieldName: 'jobTitle',
+ position: 7,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allPeopleLinkedinLink: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'linkedinLink',
+ fieldName: 'linkedinLink',
+ position: 8,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allPeopleXLink: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ viewFieldName: 'xLink',
+ fieldName: 'xLink',
+ position: 9,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-run-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-run-view-fields.util.ts
new file mode 100644
index 0000000000..ef712fd6e0
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-run-view-fields.util.ts
@@ -0,0 +1,48 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardWorkflowRunViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allWorkflowRunsName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflowRun',
+ context: {
+ viewName: 'allWorkflowRuns',
+ viewFieldName: 'name',
+ fieldName: 'name',
+ position: 0,
+ isVisible: true,
+ size: 210,
+ },
+ }),
+ allWorkflowRunsWorkflow: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflowRun',
+ context: {
+ viewName: 'allWorkflowRuns',
+ viewFieldName: 'workflow',
+ fieldName: 'workflow',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allWorkflowRunsStatus: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflowRun',
+ context: {
+ viewName: 'allWorkflowRuns',
+ viewFieldName: 'status',
+ fieldName: 'status',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-view-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-view-fields.util.ts
new file mode 100644
index 0000000000..5dd294efda
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-field/compute-standard-workflow-view-fields.util.ts
@@ -0,0 +1,84 @@
+import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
+import {
+ createStandardViewFieldFlatMetadata,
+ type CreateStandardViewFieldArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-field/create-standard-view-field-flat-metadata.util';
+
+export const computeStandardWorkflowViewFields = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allWorkflowsName: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ viewFieldName: 'name',
+ fieldName: 'name',
+ position: 0,
+ isVisible: true,
+ size: 210,
+ },
+ }),
+ allWorkflowsStatuses: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ viewFieldName: 'statuses',
+ fieldName: 'statuses',
+ position: 1,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allWorkflowsUpdatedAt: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ viewFieldName: 'updatedAt',
+ fieldName: 'updatedAt',
+ position: 2,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allWorkflowsCreatedBy: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ viewFieldName: 'createdBy',
+ fieldName: 'createdBy',
+ position: 3,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allWorkflowsVersions: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ viewFieldName: 'versions',
+ fieldName: 'versions',
+ position: 4,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ allWorkflowsRuns: createStandardViewFieldFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ viewFieldName: 'runs',
+ fieldName: 'runs',
+ position: 5,
+ isVisible: true,
+ size: 150,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/build-standard-flat-view-group-metadata-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/build-standard-flat-view-group-metadata-maps.util.ts
index 5835b2f5a8..b87da77182 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/build-standard-flat-view-group-metadata-maps.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/build-standard-flat-view-group-metadata-maps.util.ts
@@ -3,6 +3,7 @@ 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 FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/types/flat-view-group.type';
import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type';
+import { computeStandardOpportunityViewGroups } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-group/compute-standard-opportunity-view-groups.util';
import { type CreateStandardViewGroupArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-group/create-standard-view-group-flat-metadata.util';
import { computeStandardTaskViewGroups } from 'src/engine/workspace-manager/twenty-standard-application/utils/view-group/compute-standard-task-view-groups.util';
@@ -11,6 +12,7 @@ type StandardViewGroupBuilder = (
) => Record;
const STANDARD_FLAT_VIEW_GROUP_METADATA_BUILDERS_BY_OBJECT_NAME = {
+ opportunity: computeStandardOpportunityViewGroups,
task: computeStandardTaskViewGroups,
} as const satisfies {
[P in AllStandardObjectName]?: StandardViewGroupBuilder;
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/compute-standard-opportunity-view-groups.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/compute-standard-opportunity-view-groups.util.ts
new file mode 100644
index 0000000000..32f3262f5e
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view-group/compute-standard-opportunity-view-groups.util.ts
@@ -0,0 +1,72 @@
+import { type FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/types/flat-view-group.type';
+import {
+ createStandardViewGroupFlatMetadata,
+ type CreateStandardViewGroupArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view-group/create-standard-view-group-flat-metadata.util';
+
+export const computeStandardOpportunityViewGroups = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ byStageNew: createStandardViewGroupFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewGroupName: 'new',
+ fieldName: 'stage',
+ isVisible: true,
+ fieldValue: 'NEW',
+ position: 0,
+ },
+ }),
+ byStageScreening: createStandardViewGroupFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewGroupName: 'screening',
+ fieldName: 'stage',
+ isVisible: true,
+ fieldValue: 'SCREENING',
+ position: 1,
+ },
+ }),
+ byStageMeeting: createStandardViewGroupFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewGroupName: 'meeting',
+ fieldName: 'stage',
+ isVisible: true,
+ fieldValue: 'MEETING',
+ position: 2,
+ },
+ }),
+ byStageProposal: createStandardViewGroupFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewGroupName: 'proposal',
+ fieldName: 'stage',
+ isVisible: true,
+ fieldValue: 'PROPOSAL',
+ position: 3,
+ },
+ }),
+ byStageCustomer: createStandardViewGroupFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ viewGroupName: 'customer',
+ fieldName: 'stage',
+ isVisible: true,
+ fieldValue: 'CUSTOMER',
+ position: 4,
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/build-standard-flat-view-metadata-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/build-standard-flat-view-metadata-maps.util.ts
index ff6435ffe1..9b905d087d 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/build-standard-flat-view-metadata-maps.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/build-standard-flat-view-metadata-maps.util.ts
@@ -3,7 +3,17 @@ 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 FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
import { type AllStandardObjectName } from 'src/engine/workspace-manager/twenty-standard-application/types/all-standard-object-name.type';
+import { computeStandardCalendarEventViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-calendar-event-views.util';
+import { computeStandardCompanyViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-company-views.util';
+import { computeStandardDashboardViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-dashboard-views.util';
+import { computeStandardMessageThreadViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-thread-views.util';
+import { computeStandardMessageViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-views.util';
+import { computeStandardNoteViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-note-views.util';
+import { computeStandardOpportunityViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-opportunity-views.util';
+import { computeStandardPersonViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-person-views.util';
import { computeStandardTaskViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-task-views.util';
+import { computeStandardWorkflowRunViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-run-views.util';
+import { computeStandardWorkflowViews } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-views.util';
import { type CreateStandardViewArgs } from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
type StandardViewBuilder = (
@@ -11,7 +21,17 @@ type StandardViewBuilder
= (
) => Record;
const STANDARD_FLAT_VIEW_METADATA_BUILDERS_BY_OBJECT_NAME = {
+ calendarEvent: computeStandardCalendarEventViews,
+ company: computeStandardCompanyViews,
+ dashboard: computeStandardDashboardViews,
+ message: computeStandardMessageViews,
+ messageThread: computeStandardMessageThreadViews,
+ note: computeStandardNoteViews,
+ opportunity: computeStandardOpportunityViews,
+ person: computeStandardPersonViews,
task: computeStandardTaskViews,
+ workflow: computeStandardWorkflowViews,
+ workflowRun: computeStandardWorkflowRunViews,
} as const satisfies {
[P in AllStandardObjectName]?: StandardViewBuilder;
};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-calendar-event-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-calendar-event-views.util.ts
new file mode 100644
index 0000000000..f7a17d6d80
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-calendar-event-views.util.ts
@@ -0,0 +1,27 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardCalendarEventViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allCalendarEvents: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'calendarEvent',
+ context: {
+ viewName: 'allCalendarEvents',
+ name: 'All Calendar Events',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ calendarFieldName: 'startsAt',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-company-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-company-views.util.ts
new file mode 100644
index 0000000000..a4044234d5
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-company-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardCompanyViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allCompanies: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'company',
+ context: {
+ viewName: 'allCompanies',
+ name: 'All Companies',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-dashboard-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-dashboard-views.util.ts
new file mode 100644
index 0000000000..533e96328c
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-dashboard-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardDashboardViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allDashboards: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'dashboard',
+ context: {
+ viewName: 'allDashboards',
+ name: 'All Dashboards',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-thread-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-thread-views.util.ts
new file mode 100644
index 0000000000..eecd97e2d6
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-thread-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardMessageThreadViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allMessageThreads: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'messageThread',
+ context: {
+ viewName: 'allMessageThreads',
+ name: 'All Message Threads',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-views.util.ts
new file mode 100644
index 0000000000..826ebeef47
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-message-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardMessageViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allMessages: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'message',
+ context: {
+ viewName: 'allMessages',
+ name: 'All Messages',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-note-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-note-views.util.ts
new file mode 100644
index 0000000000..a0c4fd676b
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-note-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardNoteViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allNotes: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'note',
+ context: {
+ viewName: 'allNotes',
+ name: 'All Notes',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconNotes',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-opportunity-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-opportunity-views.util.ts
new file mode 100644
index 0000000000..524cd37825
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-opportunity-views.util.ts
@@ -0,0 +1,42 @@
+import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardOpportunityViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allOpportunities: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'allOpportunities',
+ name: 'All Opportunities',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ byStage: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'opportunity',
+ context: {
+ viewName: 'byStage',
+ name: 'By Stage',
+ type: ViewType.KANBAN,
+ key: null,
+ position: 2,
+ icon: 'IconLayoutKanban',
+ mainGroupByFieldName: 'stage',
+ kanbanAggregateOperation: AggregateOperations.MIN,
+ kanbanAggregateOperationFieldName: 'amount',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-person-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-person-views.util.ts
new file mode 100644
index 0000000000..e83a3d91ae
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-person-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardPersonViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allPeople: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'person',
+ context: {
+ viewName: 'allPeople',
+ name: 'All People',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-run-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-run-views.util.ts
new file mode 100644
index 0000000000..bcdd6b766b
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-run-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardWorkflowRunViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allWorkflowRuns: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'workflowRun',
+ context: {
+ viewName: 'allWorkflowRuns',
+ name: 'All Workflow Runs',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-views.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-views.util.ts
new file mode 100644
index 0000000000..86a81f0553
--- /dev/null
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/view/compute-standard-workflow-views.util.ts
@@ -0,0 +1,26 @@
+import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
+import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum';
+import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum';
+import {
+ createStandardViewFlatMetadata,
+ type CreateStandardViewArgs,
+} from 'src/engine/workspace-manager/twenty-standard-application/utils/view/create-standard-view-flat-metadata.util';
+
+export const computeStandardWorkflowViews = (
+ args: Omit, 'context'>,
+): Record => {
+ return {
+ allWorkflows: createStandardViewFlatMetadata({
+ ...args,
+ objectName: 'workflow',
+ context: {
+ viewName: 'allWorkflows',
+ name: 'All Workflows',
+ type: ViewType.TABLE,
+ key: ViewKey.INDEX,
+ position: 0,
+ icon: 'IconList',
+ },
+ }),
+ };
+};