From 3927b3640697db4738e08bc64ddc6ab3aabe81fe Mon Sep 17 00:00:00 2001
From: Marie <51697796+ijreilly@users.noreply.github.com>
Date: Tue, 30 Sep 2025 17:12:03 +0200
Subject: [PATCH] [View migration] Clean ViewFilterOperand (#14785)
In the BE we have stored filter operand as IS_EMPTY, IS_NOT_EMPTY, etc.
For some reason in the FE we were manipulating IsEmpty, IsNotEmpty, etc.
(maybe because they were used before in Views before they were moved to
core)
So we were converting the operands in the FE from IS to Is
(convertViewFilterOperandFromCore) to read and manipulate viewFilters,
and then back to BE version to send mutations etc., from Is to IS
(convertViewFilterOperandToCore).
The migration is now over, so we can remove and simplify that code.
(In the 1-5:migrate-views-to-core command we still do the migration from
Is format to IS format.)
---
.../SeeRunsWorkflowSingleRecordAction.tsx | 2 +-
.../SeeVersionsWorkflowSingleRecordAction.tsx | 2 +-
...eRunsWorkflowVersionSingleRecordAction.tsx | 4 +-
...sionsWorkflowVersionSingleRecordAction.tsx | 2 +-
...seFindManyRecordsSelectedInContextStore.ts | 2 +-
.../computeContextStoreFilters.test.ts | 2 +-
.../ObjectFilterDropdownDateInput.tsx | 2 +-
.../ObjectFilterDropdownFilterInput.tsx | 22 +-
.../ObjectFilterDropdownFilterInputHeader.tsx | 2 +-
...eOperandsThatShouldBeInitializedWithNow.ts | 8 +-
.../useApplyObjectFilterDropdownOperand.ts | 12 +-
.../utils/__tests__/getOperandLabel.test.ts | 28 +-
.../getOperandsForFilterType.test.ts | 44 +--
.../isFilterOperandExpectingValue.test.ts | 30 +-
.../utils/configurableViewFilterOperands.ts | 20 +-
.../utils/getInitialFilterValue.ts | 8 +-
.../utils/getOperandLabel.ts | 58 ++--
.../utils/isFilterOperandExpectingValue.ts | 30 +-
.../useRecordCalendarQueryDateRangeFilter.tsx | 4 +-
.../RecordDetailRelationSection.tsx | 2 +-
.../__tests__/useRemoveRecordFilter.test.tsx | 4 +-
.../__tests__/useUpsertRecordFilter.test.tsx | 6 +-
.../hooks/useCheckIsSoftDeleteFilter.ts | 2 +-
...omputeViewRecordGqlOperationFilter.test.ts | 68 ++---
...lterDescendantsOfRecordFilterGroup.test.ts | 2 +-
.../utils/getRecordFilterOperands.ts | 118 +++----
.../utils/isRecordFilterAboutSoftDelete.ts | 4 +-
.../utils/isRecordFilterConsideredEmpty.ts | 10 +-
.../turnAnyFieldFilterIntoRecordGqlFilter.ts | 24 +-
.../hooks/useHandleToggleTrashColumnFilter.ts | 2 +-
.../utils/buildRecordInputFromFilter.spec.ts | 90 +++---
.../utils/buildRecordInputFromFilter.ts | 82 ++---
.../EditableFilterChipDropdownMenuHeader.tsx | 2 +-
.../ViewBarFilterDropdownContent.tsx | 2 +-
...BarFilterDropdownFilterInputMenuHeader.tsx | 2 +-
...ViewFiltersToCurrentRecordFilters.test.tsx | 2 +-
...ViewFiltersToCurrentRecordFilters.test.tsx | 2 +-
.../internal/usePersistViewFilterRecords.ts | 5 +-
.../views/hooks/useGetViewGroupsFilters.ts | 2 +-
.../views/hooks/useOpenVectorSearchFilter.ts | 2 +-
.../hooks/useVectorSearchFilterActions.ts | 2 +-
.../__tests__/areViewFiltersEqual.test.ts | 4 +-
.../__tests__/getViewFiltersToCreate.test.ts | 2 +-
.../__tests__/getViewFiltersToDelete.test.ts | 2 +-
.../__tests__/getViewFiltersToUpdate.test.ts | 4 +-
.../utils/__tests__/viewMapFunctions.test.ts | 4 +-
.../convertCoreViewFilterToViewFilter.ts | 3 +-
.../utils/convertViewFilterOperandFromCore.ts | 26 --
.../utils/convertViewFilterOperandToCore.ts | 28 --
.../views/utils/getRecordFilterLabelValue.ts | 6 +-
.../views/utils/isVectorSearchFilter.ts | 2 +-
.../views/utils/mapViewFiltersToFilters.ts | 7 +-
.../WorkflowStepFilterAddFilterRuleSelect.tsx | 2 +-
.../WorkflowStepFilterValueInput.tsx | 2 +-
.../WorkflowEditActionFilter.stories.tsx | 2 +-
.../WorkflowStepFilterColumn.stories.tsx | 2 +-
.../WorkflowStepFilterFieldSelect.stories.tsx | 2 +-
...orkflowStepFilterOperandSelect.stories.tsx | 4 +-
.../WorkflowStepFilterValueInput.stories.tsx | 4 +-
.../hooks/useAddRootStepFilter.ts | 2 +-
.../utils/getStepFilterOperands.ts | 78 ++---
...dvancedFilterRecordFilterOperandSelect.tsx | 2 +-
...graphql-query-group-by-resolver.service.ts | 3 +-
.../utils/convert-view-filter-operands.ts | 44 ---
.../dtos/inputs/create-view-filter.input.ts | 2 +-
.../core-modules/view/dtos/view-filter.dto.ts | 2 +-
.../view/entities/view-filter.entity.ts | 2 +-
.../view/enums/view-filter-operand.ts | 18 --
.../tests/view-filter.service.spec.ts | 2 +-
.../prefill-core-views.ts | 6 +-
.../types/view-definition.interface.ts | 3 +-
.../views/tasks-assigned-to-me.ts | 3 +-
...iew-filter-operand-to-core-operand.util.ts | 42 ++-
.../evaluate-filter-conditions.util.spec.ts | 287 +++++++++---------
.../utils/evaluate-filter-conditions.util.ts | 76 ++---
.../group-by-resolvers.integration-spec.ts | 2 +-
.../view-filter-resolver.integration-spec.ts | 3 +-
.../graphql/utils/view-data-factory.util.ts | 3 +-
...etadata-related-record.integration-spec.ts | 4 +-
.../suites/view-filter.integration-spec.ts | 4 +-
.../src/types/ViewFilterOperand.ts | 32 +-
.../filter/checkIfShouldSkipFiltering.ts | 6 +-
.../computeGqlOperationFilterForEmails.ts | 12 +-
.../computeGqlOperationFilterForLinks.ts | 12 +-
.../src/utils/filter/isEmptinessOperand.ts | 2 +-
.../turnRecordFilterIntoGqlOperationFilter.ts | 100 +++---
.../utils/getEmptyRecordGqlOperationFilter.ts | 4 +-
.../utils/resolveDateViewFilterValue.ts | 4 +-
88 files changed, 730 insertions(+), 853 deletions(-)
delete mode 100644 packages/twenty-front/src/modules/views/utils/convertViewFilterOperandFromCore.ts
delete mode 100644 packages/twenty-front/src/modules/views/utils/convertViewFilterOperandToCore.ts
delete mode 100644 packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/convert-view-filter-operands.ts
delete mode 100644 packages/twenty-server/src/engine/core-modules/view/enums/view-filter-operand.ts
diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeRunsWorkflowSingleRecordAction.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeRunsWorkflowSingleRecordAction.tsx
index 71e276cd9d..2e86196ece 100644
--- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeRunsWorkflowSingleRecordAction.tsx
+++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeRunsWorkflowSingleRecordAction.tsx
@@ -15,7 +15,7 @@ export const SeeRunsWorkflowSingleRecordAction = () => {
queryParams={{
filter: {
workflow: {
- [ViewFilterOperand.Is]: {
+ [ViewFilterOperand.IS]: {
selectedRecordIds: [workflowWithCurrentVersion?.id],
},
},
diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeVersionsWorkflowSingleRecordAction.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeVersionsWorkflowSingleRecordAction.tsx
index 8ebb1e776a..45b4e81145 100644
--- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeVersionsWorkflowSingleRecordAction.tsx
+++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-actions/components/SeeVersionsWorkflowSingleRecordAction.tsx
@@ -15,7 +15,7 @@ export const SeeVersionsWorkflowSingleRecordAction = () => {
queryParams={{
filter: {
workflow: {
- [ViewFilterOperand.Is]: {
+ [ViewFilterOperand.IS]: {
selectedRecordIds: [workflowWithCurrentVersion?.id],
},
},
diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeRunsWorkflowVersionSingleRecordAction.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeRunsWorkflowVersionSingleRecordAction.tsx
index 560d4861b1..662ead1e93 100644
--- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeRunsWorkflowVersionSingleRecordAction.tsx
+++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeRunsWorkflowVersionSingleRecordAction.tsx
@@ -20,12 +20,12 @@ export const SeeRunsWorkflowVersionSingleRecordAction = () => {
queryParams={{
filter: {
workflow: {
- [ViewFilterOperand.Is]: {
+ [ViewFilterOperand.IS]: {
selectedRecordIds: [workflowWithCurrentVersion?.id],
},
},
workflowVersion: {
- [ViewFilterOperand.Is]: {
+ [ViewFilterOperand.IS]: {
selectedRecordIds: [recordId],
},
},
diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeVersionsWorkflowVersionSingleRecordAction.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeVersionsWorkflowVersionSingleRecordAction.tsx
index cd29e7fb16..b22bf994d0 100644
--- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeVersionsWorkflowVersionSingleRecordAction.tsx
+++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/workflow-version-actions/components/SeeVersionsWorkflowVersionSingleRecordAction.tsx
@@ -20,7 +20,7 @@ export const SeeVersionsWorkflowVersionSingleRecordAction = () => {
queryParams={{
filter: {
workflow: {
- [ViewFilterOperand.Is]: {
+ [ViewFilterOperand.IS]: {
selectedRecordIds: [workflowWithCurrentVersion?.id],
},
},
diff --git a/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts b/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts
index 9cb0e5eb34..62a3fa4510 100644
--- a/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts
+++ b/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts
@@ -63,7 +63,7 @@ export const useFindManyRecordsSelectedInContextStore = ({
return (
foundFieldMetadataItem?.name === 'deletedAt' &&
- filter.operand === RecordFilterOperand.IsNotEmpty
+ filter.operand === RecordFilterOperand.IS_NOT_EMPTY
);
});
diff --git a/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts b/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts
index 6271a5516e..3136ee30ab 100644
--- a/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts
+++ b/packages/twenty-front/src/modules/context-store/utils/__tests__/computeContextStoreFilters.test.ts
@@ -60,7 +60,7 @@ describe('computeContextStoreFilters', () => {
value: 'John',
displayValue: 'John',
displayAvatarUrl: undefined,
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
type: 'TEXT',
label: 'Name',
},
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownDateInput.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownDateInput.tsx
index a19e2a4ce0..8cede443bd 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownDateInput.tsx
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownDateInput.tsx
@@ -78,7 +78,7 @@ export const ObjectFilterDropdownDateInput = () => {
};
const isRelativeOperand =
- selectedOperandInDropdown === ViewFilterOperand.IsRelative;
+ selectedOperandInDropdown === ViewFilterOperand.IS_RELATIVE;
const handleClear = () => {
isRelativeOperand
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInput.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInput.tsx
index de09d92e73..0581f10811 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInput.tsx
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInput.tsx
@@ -42,20 +42,20 @@ export const ObjectFilterDropdownFilterInput = ({
const isOperandWithFilterValue =
selectedOperandInDropdown &&
[
- ViewFilterOperand.Is,
- ViewFilterOperand.IsNotNull,
- ViewFilterOperand.IsNot,
- ViewFilterOperand.LessThanOrEqual,
- ViewFilterOperand.GreaterThanOrEqual,
- ViewFilterOperand.IsBefore,
- ViewFilterOperand.IsAfter,
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
- ViewFilterOperand.IsRelative,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_NOT_NULL,
+ ViewFilterOperand.IS_NOT,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ ViewFilterOperand.IS_BEFORE,
+ ViewFilterOperand.IS_AFTER,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
+ ViewFilterOperand.IS_RELATIVE,
].includes(selectedOperandInDropdown);
const isVectorSearchFilter =
- selectedOperandInDropdown === ViewFilterOperand.VectorSearch;
+ selectedOperandInDropdown === ViewFilterOperand.VECTOR_SEARCH;
if (isVectorSearchFilter && isDefined(filterDropdownId)) {
return ;
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInputHeader.tsx b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInputHeader.tsx
index bae4b1bdb7..9e07838fad 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInputHeader.tsx
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/components/ObjectFilterDropdownFilterInputHeader.tsx
@@ -33,7 +33,7 @@ export const ObjectFilterDropdownFilterInputHeader = () => {
dropdownInstanceId === VIEW_BAR_FILTER_DROPDOWN_ID;
const isVectorSearchFilter =
- selectedOperandInDropdown === ViewFilterOperand.VectorSearch;
+ selectedOperandInDropdown === ViewFilterOperand.VECTOR_SEARCH;
if (isInViewBarFilterDropdown) {
return ;
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/constants/DateOperandsThatShouldBeInitializedWithNow.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/constants/DateOperandsThatShouldBeInitializedWithNow.ts
index da44c73431..63e34c6fe7 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/constants/DateOperandsThatShouldBeInitializedWithNow.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/constants/DateOperandsThatShouldBeInitializedWithNow.ts
@@ -2,8 +2,8 @@ import { RecordFilterOperand } from '@/object-record/record-filter/types/RecordF
export const DATE_OPERANDS_THAT_SHOULD_BE_INITIALIZED_WITH_NOW: RecordFilterOperand[] =
[
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
- RecordFilterOperand.IsAfter,
- RecordFilterOperand.IsBefore,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
+ RecordFilterOperand.IS_AFTER,
+ RecordFilterOperand.IS_BEFORE,
];
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useApplyObjectFilterDropdownOperand.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useApplyObjectFilterDropdownOperand.ts
index 862910bd30..3f12e3ab61 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useApplyObjectFilterDropdownOperand.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/hooks/useApplyObjectFilterDropdownOperand.ts
@@ -44,11 +44,11 @@ export const useApplyObjectFilterDropdownOperand = () => {
newOperand: RecordFilterOperand,
) => {
const isValuelessOperand = [
- RecordFilterOperand.IsEmpty,
- RecordFilterOperand.IsNotEmpty,
- RecordFilterOperand.IsInPast,
- RecordFilterOperand.IsInFuture,
- RecordFilterOperand.IsToday,
+ RecordFilterOperand.IS_EMPTY,
+ RecordFilterOperand.IS_NOT_EMPTY,
+ RecordFilterOperand.IS_IN_PAST,
+ RecordFilterOperand.IS_IN_FUTURE,
+ RecordFilterOperand.IS_TODAY,
].includes(newOperand);
let recordFilterToUpsert: RecordFilter | null | undefined = null;
@@ -93,7 +93,7 @@ export const useApplyObjectFilterDropdownOperand = () => {
);
recordFilterToUpsert.displayValue = displayValue;
- } else if (newOperand === RecordFilterOperand.IsRelative) {
+ } else if (newOperand === RecordFilterOperand.IS_RELATIVE) {
const defaultRelativeDate = {
direction: 'THIS' as VariableDateViewFilterValueDirection,
amount: 1,
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandLabel.test.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandLabel.test.ts
index 2dc1918c84..e8ef38c505 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandLabel.test.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandLabel.test.ts
@@ -5,13 +5,13 @@ import { getOperandLabel, getOperandLabelShort } from '../getOperandLabel';
describe('getOperandLabel', () => {
const testCases = [
- [ViewFilterOperand.Contains, 'Contains'],
- [ViewFilterOperand.DoesNotContain, "Doesn't contain"],
- [ViewFilterOperand.GreaterThanOrEqual, 'Greater than or equal'],
- [ViewFilterOperand.LessThanOrEqual, 'Less than or equal'],
- [ViewFilterOperand.Is, 'Is'],
- [ViewFilterOperand.IsNot, 'Is not'],
- [ViewFilterOperand.IsNotNull, 'Is not null'],
+ [ViewFilterOperand.CONTAINS, 'Contains'],
+ [ViewFilterOperand.DOES_NOT_CONTAIN, "Doesn't contain"],
+ [ViewFilterOperand.GREATER_THAN_OR_EQUAL, 'Greater than or equal'],
+ [ViewFilterOperand.LESS_THAN_OR_EQUAL, 'Less than or equal'],
+ [ViewFilterOperand.IS, 'Is'],
+ [ViewFilterOperand.IS_NOT, 'Is not'],
+ [ViewFilterOperand.IS_NOT_NULL, 'Is not null'],
[undefined, ''], // undefined operand
];
@@ -27,13 +27,13 @@ describe('getOperandLabel', () => {
describe('getOperandLabelShort', () => {
const testCases = [
- [ViewFilterOperand.Is, ': '],
- [ViewFilterOperand.Contains, ': '],
- [ViewFilterOperand.IsNot, ': Not'],
- [ViewFilterOperand.DoesNotContain, ': Not'],
- [ViewFilterOperand.IsNotNull, ': NotNull'],
- [ViewFilterOperand.GreaterThanOrEqual, '\u00A0≥ '],
- [ViewFilterOperand.LessThanOrEqual, '\u00A0≤ '],
+ [ViewFilterOperand.IS, ': '],
+ [ViewFilterOperand.CONTAINS, ': '],
+ [ViewFilterOperand.IS_NOT, ': Not'],
+ [ViewFilterOperand.DOES_NOT_CONTAIN, ': Not'],
+ [ViewFilterOperand.IS_NOT_NULL, ': NotNull'],
+ [ViewFilterOperand.GREATER_THAN_OR_EQUAL, '\u00A0≥ '],
+ [ViewFilterOperand.LESS_THAN_OR_EQUAL, '\u00A0≤ '],
[undefined, ': '], // undefined operand
];
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandsForFilterType.test.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandsForFilterType.test.ts
index 21c705c314..091f2ac3fb 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandsForFilterType.test.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/getOperandsForFilterType.test.ts
@@ -6,48 +6,48 @@ import { type FilterableFieldType } from 'twenty-shared/types';
describe('getOperandsForFilterType', () => {
const emptyOperands = [
- RecordFilterOperand.IsEmpty,
- RecordFilterOperand.IsNotEmpty,
+ RecordFilterOperand.IS_EMPTY,
+ RecordFilterOperand.IS_NOT_EMPTY,
];
const containsOperands = [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
];
const numberOperands = [
- RecordFilterOperand.GreaterThanOrEqual,
- RecordFilterOperand.LessThanOrEqual,
+ RecordFilterOperand.GREATER_THAN_OR_EQUAL,
+ RecordFilterOperand.LESS_THAN_OR_EQUAL,
];
const currencyAmountMicrosOperands = [
- RecordFilterOperand.GreaterThanOrEqual,
- RecordFilterOperand.LessThanOrEqual,
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.GREATER_THAN_OR_EQUAL,
+ RecordFilterOperand.LESS_THAN_OR_EQUAL,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
];
const currencyCurrencyCodeOperands = [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
];
const actorSourceOperands = [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
];
const dateOperands = [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsRelative,
- RecordFilterOperand.IsInPast,
- RecordFilterOperand.IsInFuture,
- RecordFilterOperand.IsToday,
- RecordFilterOperand.IsBefore,
- RecordFilterOperand.IsAfter,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_RELATIVE,
+ RecordFilterOperand.IS_IN_PAST,
+ RecordFilterOperand.IS_IN_FUTURE,
+ RecordFilterOperand.IS_TODAY,
+ RecordFilterOperand.IS_BEFORE,
+ RecordFilterOperand.IS_AFTER,
];
- const relationOperand = [RecordFilterOperand.Is, RecordFilterOperand.IsNot];
+ const relationOperand = [RecordFilterOperand.IS, RecordFilterOperand.IS_NOT];
const testCases = [
['TEXT', [...containsOperands, ...emptyOperands]],
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/isFilterOperandExpectingValue.test.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/isFilterOperandExpectingValue.test.ts
index 6b6d9f1bda..6d3e4a4679 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/isFilterOperandExpectingValue.test.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/__tests__/isFilterOperandExpectingValue.test.ts
@@ -4,22 +4,22 @@ import { isFilterOperandExpectingValue } from '../isFilterOperandExpectingValue'
describe('isFilterOperandExpectingValue', () => {
const testCases = [
- { operand: ViewFilterOperand.Contains, expectedResult: true },
- { operand: ViewFilterOperand.DoesNotContain, expectedResult: true },
- { operand: ViewFilterOperand.GreaterThanOrEqual, expectedResult: true },
- { operand: ViewFilterOperand.LessThanOrEqual, expectedResult: true },
- { operand: ViewFilterOperand.Is, expectedResult: true },
- { operand: ViewFilterOperand.IsNot, expectedResult: true },
- { operand: ViewFilterOperand.IsRelative, expectedResult: true },
- { operand: ViewFilterOperand.IsBefore, expectedResult: true },
- { operand: ViewFilterOperand.IsAfter, expectedResult: true },
+ { operand: ViewFilterOperand.CONTAINS, expectedResult: true },
+ { operand: ViewFilterOperand.DOES_NOT_CONTAIN, expectedResult: true },
+ { operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL, expectedResult: true },
+ { operand: ViewFilterOperand.LESS_THAN_OR_EQUAL, expectedResult: true },
+ { operand: ViewFilterOperand.IS, expectedResult: true },
+ { operand: ViewFilterOperand.IS_NOT, expectedResult: true },
+ { operand: ViewFilterOperand.IS_RELATIVE, expectedResult: true },
+ { operand: ViewFilterOperand.IS_BEFORE, expectedResult: true },
+ { operand: ViewFilterOperand.IS_AFTER, expectedResult: true },
- { operand: ViewFilterOperand.IsNotNull, expectedResult: false },
- { operand: ViewFilterOperand.IsEmpty, expectedResult: false },
- { operand: ViewFilterOperand.IsNotEmpty, expectedResult: false },
- { operand: ViewFilterOperand.IsInPast, expectedResult: false },
- { operand: ViewFilterOperand.IsInFuture, expectedResult: false },
- { operand: ViewFilterOperand.IsToday, expectedResult: false },
+ { operand: ViewFilterOperand.IS_NOT_NULL, expectedResult: false },
+ { operand: ViewFilterOperand.IS_EMPTY, expectedResult: false },
+ { operand: ViewFilterOperand.IS_NOT_EMPTY, expectedResult: false },
+ { operand: ViewFilterOperand.IS_IN_PAST, expectedResult: false },
+ { operand: ViewFilterOperand.IS_IN_FUTURE, expectedResult: false },
+ { operand: ViewFilterOperand.IS_TODAY, expectedResult: false },
];
testCases.forEach(({ operand, expectedResult }) => {
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/configurableViewFilterOperands.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/configurableViewFilterOperands.ts
index 330acf09a2..e93c99cf6b 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/configurableViewFilterOperands.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/configurableViewFilterOperands.ts
@@ -1,14 +1,14 @@
import { ViewFilterOperand } from 'twenty-shared/types';
export const configurableViewFilterOperands = new Set([
- ViewFilterOperand.Is,
- ViewFilterOperand.IsNotNull,
- ViewFilterOperand.IsNot,
- ViewFilterOperand.LessThanOrEqual,
- ViewFilterOperand.GreaterThanOrEqual,
- ViewFilterOperand.IsBefore,
- ViewFilterOperand.IsAfter,
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
- ViewFilterOperand.IsRelative,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_NOT_NULL,
+ ViewFilterOperand.IS_NOT,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ ViewFilterOperand.IS_BEFORE,
+ ViewFilterOperand.IS_AFTER,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
+ ViewFilterOperand.IS_RELATIVE,
]);
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getInitialFilterValue.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getInitialFilterValue.ts
index 6b86d72acb..32f2f92d92 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getInitialFilterValue.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getInitialFilterValue.ts
@@ -11,9 +11,9 @@ export const getInitialFilterValue = (
case 'DATE':
case 'DATE_TIME': {
const activeDatePickerOperands = [
- RecordFilterOperand.IsBefore,
- RecordFilterOperand.Is,
- RecordFilterOperand.IsAfter,
+ RecordFilterOperand.IS_BEFORE,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_AFTER,
];
if (activeDatePickerOperands.includes(newOperand)) {
@@ -25,7 +25,7 @@ export const getInitialFilterValue = (
return { value, displayValue };
}
- if (newOperand === RecordFilterOperand.IsRelative) {
+ if (newOperand === RecordFilterOperand.IS_RELATIVE) {
return { value: '', displayValue: '' };
}
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandLabel.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandLabel.ts
index b7a0f1534d..474fd170e9 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandLabel.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandLabel.ts
@@ -5,35 +5,35 @@ export const getOperandLabel = (
operand: ViewFilterOperand | null | undefined,
) => {
switch (operand) {
- case ViewFilterOperand.Contains:
+ case ViewFilterOperand.CONTAINS:
return t`Contains`;
- case ViewFilterOperand.DoesNotContain:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
return t`Doesn't contain`;
- case ViewFilterOperand.GreaterThanOrEqual:
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
return t`Greater than or equal`;
- case ViewFilterOperand.LessThanOrEqual:
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL:
return t`Less than or equal`;
- case ViewFilterOperand.IsBefore:
+ case ViewFilterOperand.IS_BEFORE:
return t`Is before`;
- case ViewFilterOperand.IsAfter:
+ case ViewFilterOperand.IS_AFTER:
return t`Is after`;
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return t`Is`;
- case ViewFilterOperand.IsNot:
+ case ViewFilterOperand.IS_NOT:
return t`Is not`;
- case ViewFilterOperand.IsNotNull:
+ case ViewFilterOperand.IS_NOT_NULL:
return t`Is not null`;
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return t`Is empty`;
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return t`Is not empty`;
- case ViewFilterOperand.IsRelative:
+ case ViewFilterOperand.IS_RELATIVE:
return t`Is relative`;
- case ViewFilterOperand.IsInPast:
+ case ViewFilterOperand.IS_IN_PAST:
return t`Is in past`;
- case ViewFilterOperand.IsInFuture:
+ case ViewFilterOperand.IS_IN_FUTURE:
return t`Is in future`;
- case ViewFilterOperand.IsToday:
+ case ViewFilterOperand.IS_TODAY:
return t`Is today`;
default:
return '';
@@ -44,31 +44,31 @@ export const getOperandLabelShort = (
operand: ViewFilterOperand | null | undefined,
) => {
switch (operand) {
- case ViewFilterOperand.Is:
- case ViewFilterOperand.Contains:
+ case ViewFilterOperand.IS:
+ case ViewFilterOperand.CONTAINS:
return ': ';
- case ViewFilterOperand.IsNot:
- case ViewFilterOperand.DoesNotContain:
+ case ViewFilterOperand.IS_NOT:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
return t`: Not`;
- case ViewFilterOperand.IsNotNull:
+ case ViewFilterOperand.IS_NOT_NULL:
return t`: NotNull`;
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return t`: NotEmpty`;
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return t`: Empty`;
- case ViewFilterOperand.GreaterThanOrEqual:
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
return '\u00A0≥ ';
- case ViewFilterOperand.LessThanOrEqual:
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL:
return '\u00A0≤ ';
- case ViewFilterOperand.IsBefore:
+ case ViewFilterOperand.IS_BEFORE:
return '\u00A0< ';
- case ViewFilterOperand.IsAfter:
+ case ViewFilterOperand.IS_AFTER:
return '\u00A0> ';
- case ViewFilterOperand.IsInPast:
+ case ViewFilterOperand.IS_IN_PAST:
return t`: Past`;
- case ViewFilterOperand.IsInFuture:
+ case ViewFilterOperand.IS_IN_FUTURE:
return t`: Future`;
- case ViewFilterOperand.IsToday:
+ case ViewFilterOperand.IS_TODAY:
return t`: Today`;
default:
return ': ';
diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/isFilterOperandExpectingValue.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/isFilterOperandExpectingValue.ts
index e605152434..86778d9939 100644
--- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/isFilterOperandExpectingValue.ts
+++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/isFilterOperandExpectingValue.ts
@@ -2,22 +2,22 @@ import { ViewFilterOperand } from 'twenty-shared/types';
export const isFilterOperandExpectingValue = (operand: ViewFilterOperand) => {
switch (operand) {
- case ViewFilterOperand.IsNotNull:
- case ViewFilterOperand.IsEmpty:
- case ViewFilterOperand.IsNotEmpty:
- case ViewFilterOperand.IsInPast:
- case ViewFilterOperand.IsInFuture:
- case ViewFilterOperand.IsToday:
+ case ViewFilterOperand.IS_NOT_NULL:
+ case ViewFilterOperand.IS_EMPTY:
+ case ViewFilterOperand.IS_NOT_EMPTY:
+ case ViewFilterOperand.IS_IN_PAST:
+ case ViewFilterOperand.IS_IN_FUTURE:
+ case ViewFilterOperand.IS_TODAY:
return false;
- case ViewFilterOperand.IsNot:
- case ViewFilterOperand.Contains:
- case ViewFilterOperand.DoesNotContain:
- case ViewFilterOperand.GreaterThanOrEqual:
- case ViewFilterOperand.LessThanOrEqual:
- case ViewFilterOperand.IsBefore:
- case ViewFilterOperand.IsAfter:
- case ViewFilterOperand.Is:
- case ViewFilterOperand.IsRelative:
+ case ViewFilterOperand.IS_NOT:
+ case ViewFilterOperand.CONTAINS:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL:
+ case ViewFilterOperand.IS_BEFORE:
+ case ViewFilterOperand.IS_AFTER:
+ case ViewFilterOperand.IS:
+ case ViewFilterOperand.IS_RELATIVE:
default:
return true;
}
diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/month/hooks/useRecordCalendarQueryDateRangeFilter.tsx b/packages/twenty-front/src/modules/object-record/record-calendar/month/hooks/useRecordCalendarQueryDateRangeFilter.tsx
index 6e9e063163..da2d8b82a4 100644
--- a/packages/twenty-front/src/modules/object-record/record-calendar/month/hooks/useRecordCalendarQueryDateRangeFilter.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-calendar/month/hooks/useRecordCalendarQueryDateRangeFilter.tsx
@@ -33,7 +33,7 @@ export const useRecordCalendarQueryDateRangeFilter = (selectedDate: Date) => {
id: DATE_RANGE_FILTER_AFTER_ID,
fieldMetadataId: dateRangeFilterFieldMetadataId,
value: `${firstDayOfFirstWeek.toISOString()}`,
- operand: RecordFilterOperand.IsAfter,
+ operand: RecordFilterOperand.IS_AFTER,
type: 'DATE',
label: 'After',
displayValue: `${firstDayOfFirstWeek.toISOString()}`,
@@ -43,7 +43,7 @@ export const useRecordCalendarQueryDateRangeFilter = (selectedDate: Date) => {
id: DATE_RANGE_FILTER_BEFORE_ID,
fieldMetadataId: dateRangeFilterFieldMetadataId,
value: `${lastDayOfLastWeek.toISOString()}`,
- operand: RecordFilterOperand.IsBefore,
+ operand: RecordFilterOperand.IS_BEFORE,
type: 'DATE',
label: 'Before',
displayValue: `${lastDayOfLastWeek.toISOString()}`,
diff --git a/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationSection.tsx b/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationSection.tsx
index 7d9e7e1681..6f03493f8f 100644
--- a/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationSection.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationSection.tsx
@@ -92,7 +92,7 @@ export const RecordDetailRelationSection = ({
const filterQueryParams = {
filter: {
[relationFieldMetadataItem?.name || '']: {
- [ViewFilterOperand.Is]: {
+ [ViewFilterOperand.IS]: {
selectedRecordIds: [recordId],
},
},
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useRemoveRecordFilter.test.tsx b/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useRemoveRecordFilter.test.tsx
index 8316aea797..63578e41c9 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useRemoveRecordFilter.test.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useRemoveRecordFilter.test.tsx
@@ -40,7 +40,7 @@ describe('useRemoveRecordFilter', () => {
id: 'filter-1',
fieldMetadataId: 'field-1',
value: 'test-value',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
displayValue: 'test-value',
label: 'Test Field',
type: FieldMetadataType.TEXT,
@@ -85,7 +85,7 @@ describe('useRemoveRecordFilter', () => {
id: 'filter-1',
fieldMetadataId: 'field-1',
value: 'test-value',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
displayValue: 'test-value',
label: 'Test Field',
type: FieldMetadataType.TEXT,
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useUpsertRecordFilter.test.tsx b/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useUpsertRecordFilter.test.tsx
index ad7744ec0f..074f65e2d6 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useUpsertRecordFilter.test.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-filter/hooks/__tests__/useUpsertRecordFilter.test.tsx
@@ -34,7 +34,7 @@ describe('useUpsertRecordFilter', () => {
id: 'filter-1',
fieldMetadataId: 'field-1',
value: 'test-value',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
displayValue: 'test-value',
label: 'Test Field',
type: FieldMetadataType.TEXT,
@@ -68,7 +68,7 @@ describe('useUpsertRecordFilter', () => {
id: 'filter-1',
fieldMetadataId: 'field-1',
value: 'initial-value',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
displayValue: 'initial-value',
label: 'Test Field',
type: FieldMetadataType.TEXT,
@@ -78,7 +78,7 @@ describe('useUpsertRecordFilter', () => {
id: 'filter-1',
fieldMetadataId: 'field-1',
value: 'updated-value',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
displayValue: 'updated-value',
label: 'Test Field',
type: FieldMetadataType.TEXT,
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/hooks/useCheckIsSoftDeleteFilter.ts b/packages/twenty-front/src/modules/object-record/record-filter/hooks/useCheckIsSoftDeleteFilter.ts
index 2ab17935a8..ed6cab4c15 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/hooks/useCheckIsSoftDeleteFilter.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/hooks/useCheckIsSoftDeleteFilter.ts
@@ -22,7 +22,7 @@ export const useCheckIsSoftDeleteFilter = () => {
});
const isNotEmptyFilter =
- recordFilter.operand === RecordFilterOperand.IsNotEmpty;
+ recordFilter.operand === RecordFilterOperand.IS_NOT_EMPTY;
return (
foundFieldMetadataItem.name === SOFT_DELETE_FILTER_FIELD_NAME &&
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/computeViewRecordGqlOperationFilter.test.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/computeViewRecordGqlOperationFilter.test.ts
index e172f5c6e2..20cd12385f 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/computeViewRecordGqlOperationFilter.test.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/computeViewRecordGqlOperationFilter.test.ts
@@ -46,7 +46,7 @@ describe('computeViewRecordGqlOperationFilter', () => {
value: companiesMock[0].name,
fieldMetadataId: companyMockNameFieldMetadataId.id,
displayValue: companiesMock[0].name,
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'TEXT',
label: 'Name',
};
@@ -89,7 +89,7 @@ describe('computeViewRecordGqlOperationFilter', () => {
value: companiesMock[0].name,
fieldMetadataId: companyMockNameFieldMetadataId.id,
displayValue: companiesMock[0].name,
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
type: FieldMetadataType.TEXT,
label: 'Name',
};
@@ -99,7 +99,7 @@ describe('computeViewRecordGqlOperationFilter', () => {
value: '1000',
fieldMetadataId: companyMockEmployeesFieldMetadataId.id,
displayValue: '1000',
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
type: FieldMetadataType.NUMBER,
label: 'Employees',
};
@@ -144,7 +144,7 @@ describe('should work as expected for the different field types', () => {
value: '123 Main St',
fieldMetadataId: companyMockAddressFieldMetadataId.id,
displayValue: '123 Main St',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
type: FieldMetadataType.ADDRESS,
label: 'Address',
};
@@ -154,7 +154,7 @@ describe('should work as expected for the different field types', () => {
value: '123 Main St',
fieldMetadataId: companyMockAddressFieldMetadataId?.id,
displayValue: '123 Main St',
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
type: FieldMetadataType.ADDRESS,
label: 'Address',
};
@@ -164,7 +164,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: companyMockAddressFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
type: FieldMetadataType.ADDRESS,
label: 'Address',
};
@@ -174,7 +174,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: companyMockAddressFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
label: 'Address',
type: FieldMetadataType.ADDRESS,
};
@@ -608,7 +608,7 @@ describe('should work as expected for the different field types', () => {
value: '1234567890',
fieldMetadataId: personMockPhonesFieldMetadataId.id,
displayValue: '1234567890',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
label: 'Phones',
type: FieldMetadataType.PHONES,
};
@@ -618,7 +618,7 @@ describe('should work as expected for the different field types', () => {
value: '1234567890',
fieldMetadataId: personMockPhonesFieldMetadataId.id,
displayValue: '1234567890',
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
label: 'Phones',
type: FieldMetadataType.PHONES,
};
@@ -628,7 +628,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: personMockPhonesFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
label: 'Phones',
type: FieldMetadataType.PHONES,
};
@@ -638,7 +638,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: personMockPhonesFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
label: 'Phones',
type: FieldMetadataType.PHONES,
};
@@ -833,7 +833,7 @@ describe('should work as expected for the different field types', () => {
value: 'test@test.com',
fieldMetadataId: personMockEmailFieldMetadataId.id,
displayValue: 'test@test.com',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
label: 'Emails',
type: FieldMetadataType.EMAILS,
};
@@ -843,7 +843,7 @@ describe('should work as expected for the different field types', () => {
value: 'test@test.com',
fieldMetadataId: personMockEmailFieldMetadataId.id,
displayValue: 'test@test.com',
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
label: 'Emails',
type: FieldMetadataType.EMAILS,
};
@@ -853,7 +853,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: personMockEmailFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
label: 'Emails',
type: FieldMetadataType.EMAILS,
};
@@ -863,7 +863,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: personMockEmailFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
label: 'Emails',
type: FieldMetadataType.EMAILS,
};
@@ -1034,7 +1034,7 @@ describe('should work as expected for the different field types', () => {
value: '2024-09-17T20:46:58.922Z',
fieldMetadataId: companyMockDateFieldMetadataId?.id,
displayValue: '2024-09-17T20:46:58.922Z',
- operand: ViewFilterOperand.IsAfter,
+ operand: ViewFilterOperand.IS_AFTER,
label: 'Created At',
type: FieldMetadataType.DATE_TIME,
};
@@ -1044,7 +1044,7 @@ describe('should work as expected for the different field types', () => {
value: '2024-09-17T20:46:58.922Z',
fieldMetadataId: companyMockDateFieldMetadataId?.id,
displayValue: '2024-09-17T20:46:58.922Z',
- operand: ViewFilterOperand.IsBefore,
+ operand: ViewFilterOperand.IS_BEFORE,
label: 'Created At',
type: FieldMetadataType.DATE_TIME,
};
@@ -1054,7 +1054,7 @@ describe('should work as expected for the different field types', () => {
value: '2024-09-17T20:46:58.922Z',
fieldMetadataId: companyMockDateFieldMetadataId?.id,
displayValue: '2024-09-17T20:46:58.922Z',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
label: 'Created At',
type: FieldMetadataType.DATE_TIME,
};
@@ -1064,7 +1064,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: companyMockDateFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
label: 'Created At',
type: FieldMetadataType.DATE_TIME,
};
@@ -1074,7 +1074,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: companyMockDateFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
label: 'Created At',
type: FieldMetadataType.DATE_TIME,
};
@@ -1147,7 +1147,7 @@ describe('should work as expected for the different field types', () => {
value: '1000',
fieldMetadataId: companyMockEmployeesFieldMetadataId?.id,
displayValue: '1000',
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
label: 'Employees',
type: FieldMetadataType.NUMBER,
};
@@ -1157,7 +1157,7 @@ describe('should work as expected for the different field types', () => {
value: '1000',
fieldMetadataId: companyMockEmployeesFieldMetadataId?.id,
displayValue: '1000',
- operand: ViewFilterOperand.LessThanOrEqual,
+ operand: ViewFilterOperand.LESS_THAN_OR_EQUAL,
label: 'Employees',
type: FieldMetadataType.NUMBER,
};
@@ -1167,7 +1167,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: companyMockEmployeesFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
label: 'Employees',
type: FieldMetadataType.NUMBER,
};
@@ -1177,7 +1177,7 @@ describe('should work as expected for the different field types', () => {
value: '',
fieldMetadataId: companyMockEmployeesFieldMetadataId?.id,
displayValue: '',
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
label: 'Employees',
type: FieldMetadataType.NUMBER,
};
@@ -1233,7 +1233,7 @@ describe('should work as expected for the different field types', () => {
value: '1000',
fieldMetadataId: companyMockARRFieldMetadataId?.id,
displayValue: '1000',
- operand: RecordFilterOperand.GreaterThanOrEqual,
+ operand: RecordFilterOperand.GREATER_THAN_OR_EQUAL,
subFieldName: 'amountMicros' satisfies Extract<
keyof FieldCurrencyValue,
'amountMicros'
@@ -1247,7 +1247,7 @@ describe('should work as expected for the different field types', () => {
value: '1000',
fieldMetadataId: companyMockARRFieldMetadataId.id,
displayValue: '1000',
- operand: RecordFilterOperand.LessThanOrEqual,
+ operand: RecordFilterOperand.LESS_THAN_OR_EQUAL,
subFieldName: 'amountMicros' satisfies Extract<
keyof FieldCurrencyValue,
'amountMicros'
@@ -1261,7 +1261,7 @@ describe('should work as expected for the different field types', () => {
value: '1000',
fieldMetadataId: companyMockARRFieldMetadataId.id,
displayValue: '1000',
- operand: RecordFilterOperand.Is,
+ operand: RecordFilterOperand.IS,
subFieldName: 'amountMicros' satisfies Extract<
keyof FieldCurrencyValue,
'amountMicros'
@@ -1275,7 +1275,7 @@ describe('should work as expected for the different field types', () => {
value: '1000',
fieldMetadataId: companyMockARRFieldMetadataId.id,
displayValue: '1000',
- operand: RecordFilterOperand.IsNot,
+ operand: RecordFilterOperand.IS_NOT,
subFieldName: 'amountMicros' satisfies Extract<
keyof FieldCurrencyValue,
'amountMicros'
@@ -1343,7 +1343,7 @@ describe('should work as expected for the different field types', () => {
value: '["USD"]',
fieldMetadataId: companyMockARRFieldMetadataId.id,
displayValue: 'USD',
- operand: RecordFilterOperand.Is,
+ operand: RecordFilterOperand.IS,
subFieldName: 'currencyCode' satisfies Extract<
keyof FieldCurrencyValue,
'currencyCode'
@@ -1357,7 +1357,7 @@ describe('should work as expected for the different field types', () => {
value: '["USD"]',
fieldMetadataId: companyMockARRFieldMetadataId.id,
displayValue: 'Not USD',
- operand: RecordFilterOperand.IsNot,
+ operand: RecordFilterOperand.IS_NOT,
subFieldName: 'currencyCode' satisfies Extract<
keyof FieldCurrencyValue,
'currencyCode'
@@ -1411,7 +1411,7 @@ describe('should work as expected for the different field types', () => {
value: '["DOG",""]',
fieldMetadataId: selectFieldMetadata?.id,
displayValue: '["Dog",""]',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
label: 'Select',
type: FieldMetadataType.SELECT,
};
@@ -1421,7 +1421,7 @@ describe('should work as expected for the different field types', () => {
value: '["DOG",""]',
fieldMetadataId: selectFieldMetadata.id,
displayValue: '["Dog",""]',
- operand: ViewFilterOperand.IsNot,
+ operand: ViewFilterOperand.IS_NOT,
label: 'Select',
type: FieldMetadataType.SELECT,
};
@@ -1481,7 +1481,7 @@ describe('should work as expected for the different field types', () => {
value: '["option1",""]',
fieldMetadataId: multiSelectFieldMetadata.id,
displayValue: '["option1",""]',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
label: 'MultiSelect',
type: FieldMetadataType.MULTI_SELECT,
};
@@ -1491,7 +1491,7 @@ describe('should work as expected for the different field types', () => {
value: '["option1",""]',
fieldMetadataId: multiSelectFieldMetadata.id,
displayValue: '["option1",""]',
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
label: 'MultiSelect',
type: FieldMetadataType.MULTI_SELECT,
};
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/getAllRecordFilterDescendantsOfRecordFilterGroup.test.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/getAllRecordFilterDescendantsOfRecordFilterGroup.test.ts
index 15c6eaa759..8e41c7d355 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/getAllRecordFilterDescendantsOfRecordFilterGroup.test.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/__tests__/getAllRecordFilterDescendantsOfRecordFilterGroup.test.ts
@@ -9,7 +9,7 @@ const MOCK_RECORD_FILTER_FIELDS: RecordFilter = {
id: 'filter-1',
recordFilterGroupId: 'root-group',
fieldMetadataId: 'field-1',
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
value: 'value-1',
displayValue: 'Display Value 1',
label: 'Label 1',
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterOperands.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterOperands.ts
index d39e9e4ad2..a246bae826 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterOperands.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/getRecordFilterOperands.ts
@@ -14,13 +14,13 @@ export type GetRecordFilterOperandsParams = {
};
const emptyOperands = [
- RecordFilterOperand.IsEmpty,
- RecordFilterOperand.IsNotEmpty,
+ RecordFilterOperand.IS_EMPTY,
+ RecordFilterOperand.IS_NOT_EMPTY,
] as const;
const relationOperands = [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
] as const;
type FilterOperandMap = {
@@ -38,110 +38,114 @@ type CompositeFieldFilterOperandMap = {
export const FILTER_OPERANDS_MAP = {
TEXT: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
EMAILS: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
FULL_NAME: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
ADDRESS: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
LINKS: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
PHONES: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
CURRENCY: [
- RecordFilterOperand.GreaterThanOrEqual,
- RecordFilterOperand.LessThanOrEqual,
+ RecordFilterOperand.GREATER_THAN_OR_EQUAL,
+ RecordFilterOperand.LESS_THAN_OR_EQUAL,
...emptyOperands,
],
NUMBER: [
- RecordFilterOperand.GreaterThanOrEqual,
- RecordFilterOperand.LessThanOrEqual,
+ RecordFilterOperand.GREATER_THAN_OR_EQUAL,
+ RecordFilterOperand.LESS_THAN_OR_EQUAL,
...emptyOperands,
],
RAW_JSON: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
DATE_TIME: [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsRelative,
- RecordFilterOperand.IsInPast,
- RecordFilterOperand.IsInFuture,
- RecordFilterOperand.IsToday,
- RecordFilterOperand.IsBefore,
- RecordFilterOperand.IsAfter,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_RELATIVE,
+ RecordFilterOperand.IS_IN_PAST,
+ RecordFilterOperand.IS_IN_FUTURE,
+ RecordFilterOperand.IS_TODAY,
+ RecordFilterOperand.IS_BEFORE,
+ RecordFilterOperand.IS_AFTER,
...emptyOperands,
],
DATE: [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsRelative,
- RecordFilterOperand.IsInPast,
- RecordFilterOperand.IsInFuture,
- RecordFilterOperand.IsToday,
- RecordFilterOperand.IsBefore,
- RecordFilterOperand.IsAfter,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_RELATIVE,
+ RecordFilterOperand.IS_IN_PAST,
+ RecordFilterOperand.IS_IN_FUTURE,
+ RecordFilterOperand.IS_TODAY,
+ RecordFilterOperand.IS_BEFORE,
+ RecordFilterOperand.IS_AFTER,
...emptyOperands,
],
RATING: [
- RecordFilterOperand.Is,
- RecordFilterOperand.GreaterThanOrEqual,
- RecordFilterOperand.LessThanOrEqual,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.GREATER_THAN_OR_EQUAL,
+ RecordFilterOperand.LESS_THAN_OR_EQUAL,
...emptyOperands,
],
RELATION: [...relationOperands, ...emptyOperands],
MULTI_SELECT: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
+ ...emptyOperands,
+ ],
+ SELECT: [
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
...emptyOperands,
],
- SELECT: [RecordFilterOperand.Is, RecordFilterOperand.IsNot, ...emptyOperands],
ACTOR: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
ARRAY: [
- RecordFilterOperand.Contains,
- RecordFilterOperand.DoesNotContain,
+ RecordFilterOperand.CONTAINS,
+ RecordFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
- BOOLEAN: [RecordFilterOperand.Is],
- TS_VECTOR: [RecordFilterOperand.VectorSearch],
- UUID: [RecordFilterOperand.Is],
+ BOOLEAN: [RecordFilterOperand.IS],
+ TS_VECTOR: [RecordFilterOperand.VECTOR_SEARCH],
+ UUID: [RecordFilterOperand.IS],
} as const satisfies FilterOperandMap;
export const COMPOSITE_FIELD_FILTER_OPERANDS_MAP = {
CURRENCY: {
currencyCode: [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
...emptyOperands,
],
amountMicros: [
- RecordFilterOperand.GreaterThanOrEqual,
- RecordFilterOperand.LessThanOrEqual,
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.GREATER_THAN_OR_EQUAL,
+ RecordFilterOperand.LESS_THAN_OR_EQUAL,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
...emptyOperands,
],
},
@@ -190,8 +194,8 @@ export const getRecordFilterOperands = ({
case 'ACTOR': {
if (isFilterOnActorSourceSubField(subFieldName)) {
return [
- RecordFilterOperand.Is,
- RecordFilterOperand.IsNot,
+ RecordFilterOperand.IS,
+ RecordFilterOperand.IS_NOT,
...emptyOperands,
];
}
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts
index cb73cddd43..b7151e7e78 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterAboutSoftDelete.ts
@@ -18,9 +18,9 @@ export const isRecordFilterAboutSoftDelete = ({
});
const valueIsNotEmptyFilter =
- (recordFilter.operand === RecordFilterOperand.Is &&
+ (recordFilter.operand === RecordFilterOperand.IS &&
!isEmpty(recordFilter.value)) ||
- recordFilter.operand === RecordFilterOperand.IsNotEmpty;
+ recordFilter.operand === RecordFilterOperand.IS_NOT_EMPTY;
return (
foundFieldMetadataItem.name === SOFT_DELETE_FILTER_FIELD_NAME &&
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterConsideredEmpty.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterConsideredEmpty.ts
index 6417ac1a97..b431b04fa2 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterConsideredEmpty.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/isRecordFilterConsideredEmpty.ts
@@ -10,11 +10,11 @@ export const isRecordFilterConsideredEmpty = (
if (
(!isDefined(value) || value === '' || value === '[]') &&
![
- RecordFilterOperand.IsEmpty,
- RecordFilterOperand.IsNotEmpty,
- RecordFilterOperand.IsInPast,
- RecordFilterOperand.IsInFuture,
- RecordFilterOperand.IsToday,
+ RecordFilterOperand.IS_EMPTY,
+ RecordFilterOperand.IS_NOT_EMPTY,
+ RecordFilterOperand.IS_IN_PAST,
+ RecordFilterOperand.IS_IN_FUTURE,
+ RecordFilterOperand.IS_TODAY,
].includes(operand)
) {
return true;
diff --git a/packages/twenty-front/src/modules/object-record/record-filter/utils/turnAnyFieldFilterIntoRecordGqlFilter.ts b/packages/twenty-front/src/modules/object-record/record-filter/utils/turnAnyFieldFilterIntoRecordGqlFilter.ts
index bbefbce0b3..b9342b8952 100644
--- a/packages/twenty-front/src/modules/object-record/record-filter/utils/turnAnyFieldFilterIntoRecordGqlFilter.ts
+++ b/packages/twenty-front/src/modules/object-record/record-filter/utils/turnAnyFieldFilterIntoRecordGqlFilter.ts
@@ -35,7 +35,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'TEXT',
} satisfies RecordFilter);
break;
@@ -46,7 +46,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'ADDRESS',
} satisfies RecordFilter);
break;
@@ -57,7 +57,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'LINKS',
} satisfies RecordFilter);
break;
@@ -68,7 +68,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'FULL_NAME',
} satisfies RecordFilter);
break;
@@ -79,7 +79,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'ARRAY',
} satisfies RecordFilter);
break;
@@ -90,7 +90,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'EMAILS',
} satisfies RecordFilter);
break;
@@ -101,7 +101,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'PHONES',
} satisfies RecordFilter);
break;
@@ -113,7 +113,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Is,
+ operand: RecordFilterOperand.IS,
type: 'NUMBER',
} satisfies RecordFilter);
}
@@ -126,7 +126,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Is,
+ operand: RecordFilterOperand.IS,
type: 'CURRENCY',
subFieldName: 'amountMicros',
} satisfies RecordFilter);
@@ -149,7 +149,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
filterValue: arrayOfCurrenciesStringified,
fieldMetadataItem,
}),
- operand: RecordFilterOperand.Is,
+ operand: RecordFilterOperand.IS,
type: 'CURRENCY',
subFieldName: 'currencyCode',
} satisfies RecordFilter);
@@ -177,7 +177,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
fieldMetadataItem,
filterValue: arrayOfSelectValues,
}),
- operand: RecordFilterOperand.Is,
+ operand: RecordFilterOperand.IS,
type: 'SELECT',
} satisfies RecordFilter);
}
@@ -204,7 +204,7 @@ export const turnAnyFieldFilterIntoRecordGqlFilter = ({
fieldMetadataItem,
filterValue: arrayOfSelectValues,
}),
- operand: RecordFilterOperand.Contains,
+ operand: RecordFilterOperand.CONTAINS,
type: 'MULTI_SELECT',
} satisfies RecordFilter);
}
diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleTrashColumnFilter.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleTrashColumnFilter.ts
index ed3a4852a4..8e20c75771 100644
--- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleTrashColumnFilter.ts
+++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useHandleToggleTrashColumnFilter.ts
@@ -57,7 +57,7 @@ export const useHandleToggleTrashColumnFilter = ({
const newFilter: RecordFilter = {
id: v4(),
fieldMetadataId: trashFieldMetadata.id,
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
displayValue: '',
type: filterType,
label: `Deleted`,
diff --git a/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.spec.ts b/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.spec.ts
index 19d8c36c00..74bad6b7fe 100644
--- a/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.spec.ts
+++ b/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.spec.ts
@@ -38,22 +38,22 @@ describe('buildValueFromFilter', () => {
describe('TEXT field type', () => {
const testCases = [
{
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
expected: 'test',
},
{
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
value: 'test',
expected: undefined,
},
{
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
value: 'test',
expected: 'test',
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: 'test',
expected: undefined,
},
@@ -71,47 +71,47 @@ describe('buildValueFromFilter', () => {
describe('DATE_TIME field type', () => {
const testCases = [
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: '2024-03-20T12:00:00Z',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsAfter,
+ operand: ViewFilterOperand.IS_AFTER,
value: '2024-03-20T12:00:00Z',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsBefore,
+ operand: ViewFilterOperand.IS_BEFORE,
value: '2024-03-20T12:00:00Z',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsInPast,
+ operand: ViewFilterOperand.IS_IN_PAST,
value: '2024-03-20T12:00:00Z',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsInFuture,
+ operand: ViewFilterOperand.IS_IN_FUTURE,
value: '2024-03-20T12:00:00Z',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsToday,
+ operand: ViewFilterOperand.IS_TODAY,
value: '',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsRelative,
+ operand: ViewFilterOperand.IS_RELATIVE,
value: '',
expected: mockDate,
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: '',
expected: undefined,
},
{
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
value: '2024-03-20T12:00:00Z',
expected: mockDate,
},
@@ -135,22 +135,22 @@ describe('buildValueFromFilter', () => {
describe('NUMBER field type', () => {
const testCases = [
{
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
value: '5',
expected: 6,
},
{
- operand: ViewFilterOperand.LessThanOrEqual,
+ operand: ViewFilterOperand.LESS_THAN_OR_EQUAL,
value: '5',
expected: 4,
},
{
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
value: '5',
expected: 5,
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: '5',
expected: undefined,
},
@@ -168,12 +168,12 @@ describe('buildValueFromFilter', () => {
describe('BOOLEAN field type', () => {
const testCases = [
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: 'true',
expected: true,
},
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: 'false',
expected: false,
},
@@ -191,22 +191,22 @@ describe('buildValueFromFilter', () => {
describe('ARRAY field type', () => {
const testCases = [
{
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
expected: 'test',
},
{
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
value: 'test',
expected: undefined,
},
{
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
value: 'test',
expected: 'test',
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: 'test',
expected: undefined,
},
@@ -236,7 +236,7 @@ describe('buildValueFromFilter', () => {
const testCases = [
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: JSON.stringify({
isCurrentWorkspaceMemberSelected: false,
selectedRecordIds: ['record-1'],
@@ -246,7 +246,7 @@ describe('buildValueFromFilter', () => {
expected: 'record-1',
},
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: JSON.stringify({
isCurrentWorkspaceMemberSelected: true,
selectedRecordIds: ['record-1'],
@@ -256,7 +256,7 @@ describe('buildValueFromFilter', () => {
expected: 'current-workspace-member-id',
},
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: JSON.stringify({
isCurrentWorkspaceMemberSelected: false,
selectedRecordIds: ['record-1', 'record-2'],
@@ -266,7 +266,7 @@ describe('buildValueFromFilter', () => {
expected: undefined,
},
{
- operand: ViewFilterOperand.IsNot,
+ operand: ViewFilterOperand.IS_NOT,
value: JSON.stringify({
isCurrentWorkspaceMemberSelected: false,
selectedRecordIds: ['record-1'],
@@ -276,7 +276,7 @@ describe('buildValueFromFilter', () => {
expected: undefined,
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: JSON.stringify({
isCurrentWorkspaceMemberSelected: false,
selectedRecordIds: ['record-1'],
@@ -309,7 +309,7 @@ describe('buildValueFromFilter', () => {
it.each(compositeTypes)(
'should return undefined for composite type %s',
(type) => {
- const filter = createTestFilter(ViewFilterOperand.Is, 'test', type);
+ const filter = createTestFilter(ViewFilterOperand.IS, 'test', type);
expect(buildValueFromFilter({ filter })).toBeUndefined();
},
);
@@ -317,7 +317,7 @@ describe('buildValueFromFilter', () => {
describe('RAW_JSON field type', () => {
it('should return undefined', () => {
- const filter = createTestFilter(ViewFilterOperand.Is, 'test', 'RAW_JSON');
+ const filter = createTestFilter(ViewFilterOperand.IS, 'test', 'RAW_JSON');
expect(buildValueFromFilter({ filter })).toBeUndefined();
});
});
@@ -346,27 +346,27 @@ describe('buildValueFromFilter', () => {
const testCases = [
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: 'Rating 1',
expected: 'RATING_1',
},
{
- operand: ViewFilterOperand.IsNotEmpty,
+ operand: ViewFilterOperand.IS_NOT_EMPTY,
value: 'Rating 2',
expected: 'RATING_2',
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: 'Rating 1',
expected: undefined,
},
{
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
value: 'Rating 1',
expected: 'RATING_2',
},
{
- operand: ViewFilterOperand.LessThanOrEqual,
+ operand: ViewFilterOperand.LESS_THAN_OR_EQUAL,
value: 'Rating 2',
expected: 'RATING_1',
},
@@ -387,7 +387,7 @@ describe('buildValueFromFilter', () => {
it('should return undefined when option is not found', () => {
const filter = createTestFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'Rating 4',
'RATING',
);
@@ -420,17 +420,17 @@ describe('buildValueFromFilter', () => {
const testCases = [
{
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: JSON.stringify(['OPTION_1']),
expected: 'OPTION_1',
},
{
- operand: ViewFilterOperand.IsNot,
+ operand: ViewFilterOperand.IS_NOT,
value: JSON.stringify(['OPTION_1']),
expected: undefined,
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: JSON.stringify(['OPTION_1']),
expected: undefined,
},
@@ -451,7 +451,7 @@ describe('buildValueFromFilter', () => {
it('should handle invalid JSON', () => {
const filter = createTestFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'invalid-json',
'SELECT',
);
@@ -467,17 +467,17 @@ describe('buildValueFromFilter', () => {
describe('MULTI_SELECT field type', () => {
const testCases = [
{
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: JSON.stringify(['OPTION_1', 'OPTION_2']),
expected: ['OPTION_1', 'OPTION_2'],
},
{
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
value: JSON.stringify(['OPTION_1']),
expected: undefined,
},
{
- operand: ViewFilterOperand.IsEmpty,
+ operand: ViewFilterOperand.IS_EMPTY,
value: JSON.stringify(['OPTION_1']),
expected: undefined,
},
@@ -493,7 +493,7 @@ describe('buildValueFromFilter', () => {
it('should handle invalid JSON', () => {
const filter = createTestFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'invalid-json',
'MULTI_SELECT',
);
@@ -504,7 +504,7 @@ describe('buildValueFromFilter', () => {
describe('UUID field type', () => {
it('should return the value', () => {
const filter = createTestFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'test-uuid',
'UUID',
);
diff --git a/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts b/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts
index 56efb267e6..f6f0ee3836 100644
--- a/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts
+++ b/packages/twenty-front/src/modules/object-record/record-table/utils/buildRecordInputFromFilter.ts
@@ -111,12 +111,12 @@ const computeValueFromFilterText = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.Contains:
+ case ViewFilterOperand.CONTAINS:
return value;
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return value;
- case ViewFilterOperand.IsEmpty:
- case ViewFilterOperand.DoesNotContain:
+ case ViewFilterOperand.IS_EMPTY:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
return undefined;
default:
assertUnreachable(operand);
@@ -128,17 +128,17 @@ const computeValueFromFilterDate = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.Is:
- case ViewFilterOperand.IsAfter:
- case ViewFilterOperand.IsBefore:
+ case ViewFilterOperand.IS:
+ case ViewFilterOperand.IS_AFTER:
+ case ViewFilterOperand.IS_BEFORE:
return new Date(value);
- case ViewFilterOperand.IsToday:
- case ViewFilterOperand.IsNotEmpty:
- case ViewFilterOperand.IsInPast:
- case ViewFilterOperand.IsInFuture:
- case ViewFilterOperand.IsRelative:
+ case ViewFilterOperand.IS_TODAY:
+ case ViewFilterOperand.IS_NOT_EMPTY:
+ case ViewFilterOperand.IS_IN_PAST:
+ case ViewFilterOperand.IS_IN_FUTURE:
+ case ViewFilterOperand.IS_RELATIVE:
return new Date();
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -151,13 +151,13 @@ const computeValueFromFilterNumber = (
) => {
switch (operand) {
//TODO: we shouln't create values from those filters as it makes no sense for the user
- case ViewFilterOperand.GreaterThanOrEqual:
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
return Number(value) + 1;
- case ViewFilterOperand.LessThanOrEqual:
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL:
return Number(value) - 1;
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return Number(value);
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -169,7 +169,7 @@ const computeValueFromFilterBoolean = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return value === 'true';
default:
assertUnreachable(operand);
@@ -181,11 +181,11 @@ const computeValueFromFilterArray = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.Contains:
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.CONTAINS:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return value;
- case ViewFilterOperand.DoesNotContain:
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -203,22 +203,22 @@ const computeValueFromFilterRating = (
}
switch (operand) {
- case ViewFilterOperand.Is:
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return option.value;
- case ViewFilterOperand.GreaterThanOrEqual: {
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL: {
const plusOne = options?.find(
(opt) => opt.position === option.position + 1,
)?.value;
return plusOne ? plusOne : option.value;
}
- case ViewFilterOperand.LessThanOrEqual: {
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL: {
const minusOne = options?.find(
(opt) => opt.position === option.position - 1,
)?.value;
return minusOne ? minusOne : option.value;
}
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -231,8 +231,8 @@ const computeValueFromFilterSelect = (
options?: FieldMetadataItemOption[],
) => {
switch (operand) {
- case ViewFilterOperand.Is:
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS:
+ case ViewFilterOperand.IS_NOT_EMPTY:
try {
const valueParsed = parseJson(value)?.[0];
const option = options?.find((option) => option.value === valueParsed);
@@ -243,8 +243,8 @@ const computeValueFromFilterSelect = (
} catch {
return undefined;
}
- case ViewFilterOperand.IsNot:
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_NOT:
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -256,16 +256,16 @@ const computeValueFromFilterMultiSelect = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.Contains:
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.CONTAINS:
+ case ViewFilterOperand.IS_NOT_EMPTY:
try {
const parsedValue = parseJson(value);
return parsedValue ? parsedValue : undefined;
} catch {
return undefined;
}
- case ViewFilterOperand.DoesNotContain:
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -280,7 +280,7 @@ const computeValueFromFilterRelation = (
label?: string,
) => {
switch (operand) {
- case ViewFilterOperand.Is: {
+ case ViewFilterOperand.IS: {
const parsedValue = parseJson<{
isCurrentWorkspaceMemberSelected: boolean;
selectedRecordIds: string[];
@@ -296,9 +296,9 @@ const computeValueFromFilterRelation = (
}
return undefined; //todo
}
- case ViewFilterOperand.IsNot:
- case ViewFilterOperand.IsNotEmpty: // todo
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_NOT:
+ case ViewFilterOperand.IS_NOT_EMPTY: // todo
+ case ViewFilterOperand.IS_EMPTY:
return undefined;
default:
assertUnreachable(operand);
@@ -310,7 +310,7 @@ const computeValueFromFilterTSVector = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.VectorSearch:
+ case ViewFilterOperand.VECTOR_SEARCH:
return value;
default:
assertUnreachable(operand);
@@ -322,7 +322,7 @@ const computeValueFromFilterUUID = (
value: string,
) => {
switch (operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return value;
default:
assertUnreachable(operand);
diff --git a/packages/twenty-front/src/modules/views/components/EditableFilterChipDropdownMenuHeader.tsx b/packages/twenty-front/src/modules/views/components/EditableFilterChipDropdownMenuHeader.tsx
index 43cf10be2f..58c98872e6 100644
--- a/packages/twenty-front/src/modules/views/components/EditableFilterChipDropdownMenuHeader.tsx
+++ b/packages/twenty-front/src/modules/views/components/EditableFilterChipDropdownMenuHeader.tsx
@@ -20,7 +20,7 @@ export const EditableFilterChipDropdownMenuHeader = () => {
);
const isVectorSearchFilter =
- selectedOperandInDropdown === ViewFilterOperand.VectorSearch;
+ selectedOperandInDropdown === ViewFilterOperand.VECTOR_SEARCH;
const { closeDropdown } = useCloseDropdown();
diff --git a/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownContent.tsx b/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownContent.tsx
index 509f5e0848..5fc0d0245b 100644
--- a/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownContent.tsx
+++ b/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownContent.tsx
@@ -25,7 +25,7 @@ export const ViewBarFilterDropdownContent = () => {
);
const isVectorSearchFilter =
- selectedOperandInDropdown === ViewFilterOperand.VectorSearch;
+ selectedOperandInDropdown === ViewFilterOperand.VECTOR_SEARCH;
const isAnyFieldSearchFilter = objectFilterDropdownAnyFieldSearchIsSelected;
diff --git a/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownFilterInputMenuHeader.tsx b/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownFilterInputMenuHeader.tsx
index b9cbd4f747..2b12a675e4 100644
--- a/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownFilterInputMenuHeader.tsx
+++ b/packages/twenty-front/src/modules/views/components/ViewBarFilterDropdownFilterInputMenuHeader.tsx
@@ -21,7 +21,7 @@ export const ViewBarFilterDropdownFilterInputMenuHeader = () => {
);
const isVectorSearchFilter =
- selectedOperandInDropdown === ViewFilterOperand.VectorSearch;
+ selectedOperandInDropdown === ViewFilterOperand.VECTOR_SEARCH;
const { clearVectorSearchInput } = useClearVectorSearchInput();
diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx
index b402584c0a..9ff907e04e 100644
--- a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx
+++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyCurrentViewFiltersToCurrentRecordFilters.test.tsx
@@ -45,7 +45,7 @@ describe('useApplyCurrentViewFiltersToCurrentRecordFilters', () => {
__typename: 'ViewFilter',
id: 'filter-1',
fieldMetadataId: mockFieldMetadataItem.id,
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
displayValue: 'test',
viewFilterGroupId: 'group-1',
diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewFiltersToCurrentRecordFilters.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewFiltersToCurrentRecordFilters.test.tsx
index 5f0ca977e1..24337959de 100644
--- a/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewFiltersToCurrentRecordFilters.test.tsx
+++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useApplyViewFiltersToCurrentRecordFilters.test.tsx
@@ -29,7 +29,7 @@ describe('useApplyViewFiltersToCurrentRecordFilters', () => {
__typename: 'ViewFilter',
id: 'filter-1',
fieldMetadataId: mockFieldMetadataItem.id,
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
displayValue: mockFieldMetadataItem.label,
viewFilterGroupId: 'group-1',
diff --git a/packages/twenty-front/src/modules/views/hooks/internal/usePersistViewFilterRecords.ts b/packages/twenty-front/src/modules/views/hooks/internal/usePersistViewFilterRecords.ts
index 0986a1575c..1aa444f55d 100644
--- a/packages/twenty-front/src/modules/views/hooks/internal/usePersistViewFilterRecords.ts
+++ b/packages/twenty-front/src/modules/views/hooks/internal/usePersistViewFilterRecords.ts
@@ -13,7 +13,6 @@ import { DESTROY_CORE_VIEW_FILTER } from '@/views/graphql/mutations/destroyCoreV
import { UPDATE_CORE_VIEW_FILTER } from '@/views/graphql/mutations/updateCoreViewFilter';
import { type GraphQLView } from '@/views/types/GraphQLView';
import { type ViewFilter } from '@/views/types/ViewFilter';
-import { convertViewFilterOperandToCore } from '@/views/utils/convertViewFilterOperandToCore';
import { useApolloClient } from '@apollo/client';
import { isNull } from '@sniptt/guards';
import { isDefined } from 'twenty-shared/utils';
@@ -46,7 +45,7 @@ export const usePersistViewFilterRecords = () => {
fieldMetadataId: viewFilter.fieldMetadataId,
viewId: view.id,
value: viewFilter.value,
- operand: convertViewFilterOperandToCore(viewFilter.operand),
+ operand: viewFilter.operand,
viewFilterGroupId: viewFilter.viewFilterGroupId,
positionInViewFilterGroup: viewFilter.positionInViewFilterGroup,
subFieldName: viewFilter.subFieldName ?? null,
@@ -87,7 +86,7 @@ export const usePersistViewFilterRecords = () => {
id: viewFilter.id,
input: {
value: viewFilter.value,
- operand: convertViewFilterOperandToCore(viewFilter.operand),
+ operand: viewFilter.operand,
positionInViewFilterGroup: viewFilter.positionInViewFilterGroup,
viewFilterGroupId: viewFilter.viewFilterGroupId,
subFieldName: viewFilter.subFieldName ?? null,
diff --git a/packages/twenty-front/src/modules/views/hooks/useGetViewGroupsFilters.ts b/packages/twenty-front/src/modules/views/hooks/useGetViewGroupsFilters.ts
index b983e3b414..050662e96b 100644
--- a/packages/twenty-front/src/modules/views/hooks/useGetViewGroupsFilters.ts
+++ b/packages/twenty-front/src/modules/views/hooks/useGetViewGroupsFilters.ts
@@ -14,7 +14,7 @@ export const useGetViewGroupsFilters = (): RecordFilter[] => {
id: recordGroup.id,
fieldMetadataId: recordGroup.fieldMetadataId,
value: JSON.stringify([recordGroup.fieldValue]),
- operand: ViewFilterOperand.IsNot,
+ operand: ViewFilterOperand.IS_NOT,
displayValue: '',
type: getFilterTypeFromFieldType(FieldMetadataType.SELECT),
label: '',
diff --git a/packages/twenty-front/src/modules/views/hooks/useOpenVectorSearchFilter.ts b/packages/twenty-front/src/modules/views/hooks/useOpenVectorSearchFilter.ts
index bce7bd409e..89157e0673 100644
--- a/packages/twenty-front/src/modules/views/hooks/useOpenVectorSearchFilter.ts
+++ b/packages/twenty-front/src/modules/views/hooks/useOpenVectorSearchFilter.ts
@@ -16,7 +16,7 @@ export const useOpenVectorSearchFilter = (filterDropdownId?: string) => {
const openVectorSearchFilter = () => {
setObjectFilterDropdownFilterIsSelected(true);
- setSelectedOperandInDropdown(ViewFilterOperand.VectorSearch);
+ setSelectedOperandInDropdown(ViewFilterOperand.VECTOR_SEARCH);
};
return {
diff --git a/packages/twenty-front/src/modules/views/hooks/useVectorSearchFilterActions.ts b/packages/twenty-front/src/modules/views/hooks/useVectorSearchFilterActions.ts
index 6207223057..15a09653a5 100644
--- a/packages/twenty-front/src/modules/views/hooks/useVectorSearchFilterActions.ts
+++ b/packages/twenty-front/src/modules/views/hooks/useVectorSearchFilterActions.ts
@@ -26,7 +26,7 @@ export const useVectorSearchFilterActions = () => {
fieldMetadataId: vectorSearchField.id,
value: value,
displayValue: value,
- operand: ViewFilterOperand.VectorSearch,
+ operand: ViewFilterOperand.VECTOR_SEARCH,
type: getFilterTypeFromFieldType(vectorSearchField.type),
label: 'Search',
};
diff --git a/packages/twenty-front/src/modules/views/utils/__tests__/areViewFiltersEqual.test.ts b/packages/twenty-front/src/modules/views/utils/__tests__/areViewFiltersEqual.test.ts
index c38102dfb6..5981a3d6aa 100644
--- a/packages/twenty-front/src/modules/views/utils/__tests__/areViewFiltersEqual.test.ts
+++ b/packages/twenty-front/src/modules/views/utils/__tests__/areViewFiltersEqual.test.ts
@@ -7,7 +7,7 @@ describe('areViewFiltersEqual', () => {
__typename: 'ViewFilter',
id: 'filter-1',
fieldMetadataId: 'field-1',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
displayValue: 'test',
viewFilterGroupId: 'group-1',
@@ -46,7 +46,7 @@ describe('areViewFiltersEqual', () => {
const filterA = { ...baseFilter };
const filterB = {
...baseFilter,
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
};
expect(areViewFiltersEqual(filterA, filterB)).toBe(false);
diff --git a/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToCreate.test.ts b/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToCreate.test.ts
index 890e349513..3013a646e7 100644
--- a/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToCreate.test.ts
+++ b/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToCreate.test.ts
@@ -7,7 +7,7 @@ describe('getViewFiltersToCreate', () => {
__typename: 'ViewFilter',
id: 'filter-1',
fieldMetadataId: 'field-1',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
displayValue: 'test',
viewFilterGroupId: 'group-1',
diff --git a/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToDelete.test.ts b/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToDelete.test.ts
index 8da7057bab..566070c54e 100644
--- a/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToDelete.test.ts
+++ b/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToDelete.test.ts
@@ -7,7 +7,7 @@ describe('getViewFiltersToDelete', () => {
__typename: 'ViewFilter',
id: 'filter-1',
fieldMetadataId: 'field-1',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
displayValue: 'test',
viewFilterGroupId: 'group-1',
diff --git a/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToUpdate.test.ts b/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToUpdate.test.ts
index 6428c78d29..85fdc6eb8f 100644
--- a/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToUpdate.test.ts
+++ b/packages/twenty-front/src/modules/views/utils/__tests__/getViewFiltersToUpdate.test.ts
@@ -7,7 +7,7 @@ describe('getViewFiltersToUpdate', () => {
__typename: 'ViewFilter',
id: 'filter-1',
fieldMetadataId: 'field-1',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'test',
displayValue: 'test',
viewFilterGroupId: 'group-1',
@@ -73,7 +73,7 @@ describe('getViewFiltersToUpdate', () => {
const existingFilter = { ...baseFilter } satisfies ViewFilter;
const filterWithNewOperand = {
...baseFilter,
- operand: ViewFilterOperand.DoesNotContain,
+ operand: ViewFilterOperand.DOES_NOT_CONTAIN,
} satisfies ViewFilter;
const currentViewFilters: ViewFilter[] = [existingFilter];
diff --git a/packages/twenty-front/src/modules/views/utils/__tests__/viewMapFunctions.test.ts b/packages/twenty-front/src/modules/views/utils/__tests__/viewMapFunctions.test.ts
index ee9f1949c7..4570ff6e68 100644
--- a/packages/twenty-front/src/modules/views/utils/__tests__/viewMapFunctions.test.ts
+++ b/packages/twenty-front/src/modules/views/utils/__tests__/viewMapFunctions.test.ts
@@ -28,7 +28,7 @@ describe('mapViewFiltersToFilters', () => {
fieldMetadataId: '05731f68-6e7a-4903-8374-c0b6a9063482',
value: 'testValue',
displayValue: 'Test Display Value',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
},
];
@@ -38,7 +38,7 @@ describe('mapViewFiltersToFilters', () => {
fieldMetadataId: '05731f68-6e7a-4903-8374-c0b6a9063482',
value: 'testValue',
displayValue: 'Test Display Value',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
label: baseFieldMetadataItem.label,
type: FieldMetadataType.FULL_NAME,
positionInRecordFilterGroup: undefined,
diff --git a/packages/twenty-front/src/modules/views/utils/convertCoreViewFilterToViewFilter.ts b/packages/twenty-front/src/modules/views/utils/convertCoreViewFilterToViewFilter.ts
index 256942178e..edac628931 100644
--- a/packages/twenty-front/src/modules/views/utils/convertCoreViewFilterToViewFilter.ts
+++ b/packages/twenty-front/src/modules/views/utils/convertCoreViewFilterToViewFilter.ts
@@ -2,7 +2,6 @@ import { type CompositeFieldSubFieldName } from '@/settings/data-model/types/Com
import { type ViewFilter } from '@/views/types/ViewFilter';
import { convertViewFilterValueToString } from 'twenty-shared/utils';
import { type CoreViewFilter } from '~/generated/graphql';
-import { convertViewFilterOperandFromCore } from '../utils/convertViewFilterOperandFromCore';
export const convertCoreViewFilterToViewFilter = (
coreViewFilter: Pick<
@@ -20,7 +19,7 @@ export const convertCoreViewFilterToViewFilter = (
__typename: 'ViewFilter',
id: coreViewFilter.id,
fieldMetadataId: coreViewFilter.fieldMetadataId,
- operand: convertViewFilterOperandFromCore(coreViewFilter.operand),
+ operand: coreViewFilter.operand,
value: convertViewFilterValueToString(coreViewFilter.value),
displayValue: convertViewFilterValueToString(coreViewFilter.value),
viewFilterGroupId: coreViewFilter.viewFilterGroupId,
diff --git a/packages/twenty-front/src/modules/views/utils/convertViewFilterOperandFromCore.ts b/packages/twenty-front/src/modules/views/utils/convertViewFilterOperandFromCore.ts
deleted file mode 100644
index 54ee596e9e..0000000000
--- a/packages/twenty-front/src/modules/views/utils/convertViewFilterOperandFromCore.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { ViewFilterOperand } from 'twenty-shared/types';
-import { ViewFilterOperand as CoreViewFilterOperand } from '~/generated/graphql';
-
-const mappingFromCore: Record = {
- [CoreViewFilterOperand.IS]: ViewFilterOperand.Is,
- [CoreViewFilterOperand.IS_NOT_NULL]: ViewFilterOperand.IsNotNull,
- [CoreViewFilterOperand.IS_NOT]: ViewFilterOperand.IsNot,
- [CoreViewFilterOperand.LESS_THAN_OR_EQUAL]: ViewFilterOperand.LessThanOrEqual,
- [CoreViewFilterOperand.GREATER_THAN_OR_EQUAL]:
- ViewFilterOperand.GreaterThanOrEqual,
- [CoreViewFilterOperand.IS_BEFORE]: ViewFilterOperand.IsBefore,
- [CoreViewFilterOperand.IS_AFTER]: ViewFilterOperand.IsAfter,
- [CoreViewFilterOperand.CONTAINS]: ViewFilterOperand.Contains,
- [CoreViewFilterOperand.DOES_NOT_CONTAIN]: ViewFilterOperand.DoesNotContain,
- [CoreViewFilterOperand.IS_EMPTY]: ViewFilterOperand.IsEmpty,
- [CoreViewFilterOperand.IS_NOT_EMPTY]: ViewFilterOperand.IsNotEmpty,
- [CoreViewFilterOperand.IS_RELATIVE]: ViewFilterOperand.IsRelative,
- [CoreViewFilterOperand.IS_IN_PAST]: ViewFilterOperand.IsInPast,
- [CoreViewFilterOperand.IS_IN_FUTURE]: ViewFilterOperand.IsInFuture,
- [CoreViewFilterOperand.IS_TODAY]: ViewFilterOperand.IsToday,
- [CoreViewFilterOperand.VECTOR_SEARCH]: ViewFilterOperand.VectorSearch,
-};
-
-export const convertViewFilterOperandFromCore = (
- coreOperand: CoreViewFilterOperand,
-): ViewFilterOperand => mappingFromCore[coreOperand];
diff --git a/packages/twenty-front/src/modules/views/utils/convertViewFilterOperandToCore.ts b/packages/twenty-front/src/modules/views/utils/convertViewFilterOperandToCore.ts
deleted file mode 100644
index 23fad588b7..0000000000
--- a/packages/twenty-front/src/modules/views/utils/convertViewFilterOperandToCore.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { ViewFilterOperand } from 'twenty-shared/types';
-import { ViewFilterOperand as CoreViewFilterOperand } from '~/generated-metadata/graphql';
-
-const operandMapping: Record = {
- [ViewFilterOperand.Is]: CoreViewFilterOperand.IS,
- [ViewFilterOperand.IsNotNull]: CoreViewFilterOperand.IS_NOT_NULL,
- [ViewFilterOperand.IsNot]: CoreViewFilterOperand.IS_NOT,
- [ViewFilterOperand.LessThanOrEqual]: CoreViewFilterOperand.LESS_THAN_OR_EQUAL,
- [ViewFilterOperand.GreaterThanOrEqual]:
- CoreViewFilterOperand.GREATER_THAN_OR_EQUAL,
- [ViewFilterOperand.IsBefore]: CoreViewFilterOperand.IS_BEFORE,
- [ViewFilterOperand.IsAfter]: CoreViewFilterOperand.IS_AFTER,
- [ViewFilterOperand.Contains]: CoreViewFilterOperand.CONTAINS,
- [ViewFilterOperand.DoesNotContain]: CoreViewFilterOperand.DOES_NOT_CONTAIN,
- [ViewFilterOperand.IsEmpty]: CoreViewFilterOperand.IS_EMPTY,
- [ViewFilterOperand.IsNotEmpty]: CoreViewFilterOperand.IS_NOT_EMPTY,
- [ViewFilterOperand.IsRelative]: CoreViewFilterOperand.IS_RELATIVE,
- [ViewFilterOperand.IsInPast]: CoreViewFilterOperand.IS_IN_PAST,
- [ViewFilterOperand.IsInFuture]: CoreViewFilterOperand.IS_IN_FUTURE,
- [ViewFilterOperand.IsToday]: CoreViewFilterOperand.IS_TODAY,
- [ViewFilterOperand.VectorSearch]: CoreViewFilterOperand.VECTOR_SEARCH,
-};
-
-export const convertViewFilterOperandToCore = (
- sharedOperand: ViewFilterOperand,
-): CoreViewFilterOperand => {
- return operandMapping[sharedOperand];
-};
diff --git a/packages/twenty-front/src/modules/views/utils/getRecordFilterLabelValue.ts b/packages/twenty-front/src/modules/views/utils/getRecordFilterLabelValue.ts
index 0df5dfcf7d..ee925b5cc6 100644
--- a/packages/twenty-front/src/modules/views/utils/getRecordFilterLabelValue.ts
+++ b/packages/twenty-front/src/modules/views/utils/getRecordFilterLabelValue.ts
@@ -21,9 +21,9 @@ export const getRecordFilterLabelValue = ({
if (isDateOrDateTimeFilter) {
switch (recordFilter.operand) {
- case RecordFilterOperand.IsToday:
- case RecordFilterOperand.IsInFuture:
- case RecordFilterOperand.IsInPast:
+ case RecordFilterOperand.IS_TODAY:
+ case RecordFilterOperand.IS_IN_FUTURE:
+ case RecordFilterOperand.IS_IN_PAST:
return operandLabelShort;
default:
return `${operandLabelShort} ${recordFilter.displayValue}`;
diff --git a/packages/twenty-front/src/modules/views/utils/isVectorSearchFilter.ts b/packages/twenty-front/src/modules/views/utils/isVectorSearchFilter.ts
index 6f6a6cb81e..350bfd7f4b 100644
--- a/packages/twenty-front/src/modules/views/utils/isVectorSearchFilter.ts
+++ b/packages/twenty-front/src/modules/views/utils/isVectorSearchFilter.ts
@@ -2,5 +2,5 @@ import { type RecordFilter } from '@/object-record/record-filter/types/RecordFil
import { ViewFilterOperand } from 'twenty-shared/types';
export const isVectorSearchFilter = (filter: RecordFilter) => {
- return filter.operand === ViewFilterOperand.VectorSearch;
+ return filter.operand === ViewFilterOperand.VECTOR_SEARCH;
};
diff --git a/packages/twenty-front/src/modules/views/utils/mapViewFiltersToFilters.ts b/packages/twenty-front/src/modules/views/utils/mapViewFiltersToFilters.ts
index 9f1dcf27cf..626db4c736 100644
--- a/packages/twenty-front/src/modules/views/utils/mapViewFiltersToFilters.ts
+++ b/packages/twenty-front/src/modules/views/utils/mapViewFiltersToFilters.ts
@@ -4,8 +4,6 @@ import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataIte
import { isSystemSearchVectorField } from '@/object-record/utils/isSystemSearchVectorField';
import { type CompositeFieldSubFieldName } from '@/settings/data-model/types/CompositeFieldSubFieldName';
-import { convertViewFilterOperandFromCore } from '@/views/utils/convertViewFilterOperandFromCore';
-import { type ViewFilterOperand } from 'twenty-shared/types';
import { getFilterTypeFromFieldType, isDefined } from 'twenty-shared/utils';
import { type CoreViewFilter } from '~/generated/graphql';
import { type ViewFilter } from '../types/ViewFilter';
@@ -34,10 +32,7 @@ export const mapViewFiltersToFilters = (
? 'Search'
: availableFieldMetadataItem.label;
- const operand =
- viewFilter.__typename === 'CoreViewFilter'
- ? convertViewFilterOperandFromCore(viewFilter.operand)
- : (viewFilter.operand as ViewFilterOperand);
+ const operand = viewFilter.operand;
return {
id: viewFilter.id,
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterAddFilterRuleSelect.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterAddFilterRuleSelect.tsx
index cb019d8222..02e358015e 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterAddFilterRuleSelect.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterAddFilterRuleSelect.tsx
@@ -25,7 +25,7 @@ const BASE_NEW_STEP_FILTER = {
type: 'unknown',
label: '',
value: '',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
displayValue: '',
stepFilterGroupId: '',
stepOutputKey: '',
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterValueInput.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterValueInput.tsx
index 9ba2586f16..e22f44cb77 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterValueInput.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterValueInput.tsx
@@ -163,7 +163,7 @@ export const WorkflowStepFilterValueInput = ({
);
}
- if (isDateField && stepFilter.operand === ViewFilterOperand.IsRelative) {
+ if (isDateField && stepFilter.operand === ViewFilterOperand.IS_RELATIVE) {
return (
= {
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterFieldSelect.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterFieldSelect.stories.tsx
index f96aa94121..f703952c87 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterFieldSelect.stories.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterFieldSelect.stories.tsx
@@ -14,7 +14,7 @@ const DEFAULT_STEP_FILTER: StepFilter = {
stepFilterGroupId: 'filter-group-1',
stepOutputKey: '',
type: 'text',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
value: '',
positionInStepFilterGroup: 0,
};
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterOperandSelect.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterOperandSelect.stories.tsx
index 23e02faec1..bbd6869a0d 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterOperandSelect.stories.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterOperandSelect.stories.tsx
@@ -15,7 +15,7 @@ const DEFAULT_STEP_FILTER: StepFilter = {
stepFilterGroupId: 'filter-group-1',
stepOutputKey: 'company.name',
type: 'text',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: '',
positionInStepFilterGroup: 0,
};
@@ -25,7 +25,7 @@ const GREATER_THAN_FILTER: StepFilter = {
stepFilterGroupId: 'filter-group-1',
stepOutputKey: 'company.employees',
type: 'number',
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
value: '100',
positionInStepFilterGroup: 0,
};
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterValueInput.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterValueInput.stories.tsx
index 7ef34351ad..4731ecc2af 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterValueInput.stories.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/__stories__/WorkflowStepFilterValueInput.stories.tsx
@@ -15,7 +15,7 @@ const TEXT_FILTER: StepFilter = {
stepFilterGroupId: 'filter-group-1',
stepOutputKey: 'company.name',
type: 'text',
- operand: ViewFilterOperand.Contains,
+ operand: ViewFilterOperand.CONTAINS,
value: 'Acme',
positionInStepFilterGroup: 0,
};
@@ -25,7 +25,7 @@ const NUMBER_FILTER: StepFilter = {
stepFilterGroupId: 'filter-group-1',
stepOutputKey: 'company.employees',
type: 'number',
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
value: '100',
positionInStepFilterGroup: 0,
};
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/hooks/useAddRootStepFilter.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/hooks/useAddRootStepFilter.ts
index c80e9f41df..911d23b0b3 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/hooks/useAddRootStepFilter.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/hooks/useAddRootStepFilter.ts
@@ -50,7 +50,7 @@ export const useAddRootStepFilter = () => {
id: v4(),
type: 'unknown',
value: '',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: newStepFilterGroup.id,
stepOutputKey: '',
positionInStepFilterGroup: 0,
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/utils/getStepFilterOperands.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/utils/getStepFilterOperands.ts
index 4e288605b1..7926934785 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/utils/getStepFilterOperands.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/utils/getStepFilterOperands.ts
@@ -1,69 +1,69 @@
import { ViewFilterOperand } from 'twenty-shared/types';
const emptyOperands = [
- ViewFilterOperand.IsEmpty,
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_EMPTY,
+ ViewFilterOperand.IS_NOT_EMPTY,
] as const;
const relationOperands = [
- ViewFilterOperand.Is,
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_NOT,
] as const;
const defaultOperands = [
- ViewFilterOperand.Is,
- ViewFilterOperand.IsNot,
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
- ViewFilterOperand.GreaterThanOrEqual,
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_NOT,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
...emptyOperands,
] as const;
export const FILTER_OPERANDS_MAP = {
TEXT: [
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
NUMBER: [
- ViewFilterOperand.GreaterThanOrEqual,
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
...emptyOperands,
],
RAW_JSON: [
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
DATE_TIME: [
- ViewFilterOperand.Is,
- ViewFilterOperand.IsInPast,
- ViewFilterOperand.IsInFuture,
- ViewFilterOperand.IsToday,
- ViewFilterOperand.IsBefore,
- ViewFilterOperand.IsAfter,
- ViewFilterOperand.IsRelative,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_IN_PAST,
+ ViewFilterOperand.IS_IN_FUTURE,
+ ViewFilterOperand.IS_TODAY,
+ ViewFilterOperand.IS_BEFORE,
+ ViewFilterOperand.IS_AFTER,
+ ViewFilterOperand.IS_RELATIVE,
...emptyOperands,
],
- RATING: [ViewFilterOperand.Is, ViewFilterOperand.IsNot, ...emptyOperands],
+ RATING: [ViewFilterOperand.IS, ViewFilterOperand.IS_NOT, ...emptyOperands],
RELATION: [...relationOperands, ...emptyOperands],
MULTI_SELECT: [
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
- SELECT: [ViewFilterOperand.Is, ViewFilterOperand.IsNot, ...emptyOperands],
+ SELECT: [ViewFilterOperand.IS, ViewFilterOperand.IS_NOT, ...emptyOperands],
ARRAY: [
- ViewFilterOperand.Contains,
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.CONTAINS,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
...emptyOperands,
],
- BOOLEAN: [ViewFilterOperand.Is],
- UUID: [ViewFilterOperand.Is],
+ BOOLEAN: [ViewFilterOperand.IS],
+ UUID: [ViewFilterOperand.IS],
NUMERIC: [
- ViewFilterOperand.GreaterThanOrEqual,
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
...emptyOperands,
],
};
@@ -71,15 +71,15 @@ export const FILTER_OPERANDS_MAP = {
export const COMPOSITE_FIELD_FILTER_OPERANDS_MAP = {
CURRENCY: {
currencyCode: [
- ViewFilterOperand.Is,
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_NOT,
...emptyOperands,
],
amountMicros: [
- ViewFilterOperand.GreaterThanOrEqual,
- ViewFilterOperand.LessThanOrEqual,
- ViewFilterOperand.Is,
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
+ ViewFilterOperand.IS,
+ ViewFilterOperand.IS_NOT,
...emptyOperands,
],
},
diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterOperandSelect.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterOperandSelect.tsx
index 71c3218a5b..db134d186d 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterOperandSelect.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/find-records-action/components/WorkflowAdvancedFilterRecordFilterOperandSelect.tsx
@@ -33,7 +33,7 @@ export const WorkflowAdvancedFilterRecordFilterOperandSelect = ({
? getRecordFilterOperands({
filterType,
subFieldName: filter?.subFieldName,
- }).filter((operand) => operand !== RecordFilterOperand.IsRelative)
+ }).filter((operand) => operand !== RecordFilterOperand.IS_RELATIVE)
: [];
if (isDisabled === true) {
diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-group-by-resolver.service.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-group-by-resolver.service.ts
index 331e21bd38..f9b91c6e3d 100644
--- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-group-by-resolver.service.ts
+++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-group-by-resolver.service.ts
@@ -30,7 +30,6 @@ import {
GraphqlQueryRunnerExceptionCode,
} from 'src/engine/api/graphql/graphql-query-runner/errors/graphql-query-runner.exception';
import { ProcessAggregateHelper } from 'src/engine/api/graphql/graphql-query-runner/helpers/process-aggregate.helper';
-import { convertViewFilterOperand } from 'src/engine/api/graphql/graphql-query-runner/utils/convert-view-filter-operands';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service';
import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service';
@@ -247,7 +246,7 @@ export class GraphqlQueryGroupByResolverService extends GraphqlQueryBaseResolver
fieldMetadataId: viewFilter.fieldMetadataId,
value: convertViewFilterValueToString(viewFilter.value),
type: getFilterTypeFromFieldType(fieldMetadataItem.type),
- operand: convertViewFilterOperand(viewFilter.operand),
+ operand: viewFilter.operand,
recordFilterGroupId: viewFilter.viewFilterGroupId,
positionInRecordFilterGroup: viewFilter.positionInViewFilterGroup,
subFieldName: viewFilter.subFieldName as CompositeFieldSubFieldName,
diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/convert-view-filter-operands.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/convert-view-filter-operands.ts
deleted file mode 100644
index a486f27576..0000000000
--- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/convert-view-filter-operands.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { ViewFilterOperand as ViewFilterOperandShared } from 'twenty-shared/types';
-
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
-
-export const convertViewFilterOperand = (
- operand: ViewFilterOperand,
-): ViewFilterOperandShared => {
- switch (operand) {
- case ViewFilterOperand.IS:
- return ViewFilterOperandShared.Is;
- case ViewFilterOperand.IS_NOT_NULL:
- return ViewFilterOperandShared.IsNotNull;
- case ViewFilterOperand.IS_NOT:
- return ViewFilterOperandShared.IsNot;
- case ViewFilterOperand.LESS_THAN_OR_EQUAL:
- return ViewFilterOperandShared.LessThanOrEqual;
- case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
- return ViewFilterOperandShared.GreaterThanOrEqual;
- case ViewFilterOperand.IS_BEFORE:
- return ViewFilterOperandShared.IsBefore;
- case ViewFilterOperand.IS_AFTER:
- return ViewFilterOperandShared.IsAfter;
- case ViewFilterOperand.CONTAINS:
- return ViewFilterOperandShared.Contains;
- case ViewFilterOperand.DOES_NOT_CONTAIN:
- return ViewFilterOperandShared.DoesNotContain;
- case ViewFilterOperand.IS_EMPTY:
- return ViewFilterOperandShared.IsEmpty;
- case ViewFilterOperand.IS_NOT_EMPTY:
- return ViewFilterOperandShared.IsNotEmpty;
- case ViewFilterOperand.IS_RELATIVE:
- return ViewFilterOperandShared.IsRelative;
- case ViewFilterOperand.IS_IN_PAST:
- return ViewFilterOperandShared.IsInPast;
- case ViewFilterOperand.IS_IN_FUTURE:
- return ViewFilterOperandShared.IsInFuture;
- case ViewFilterOperand.IS_TODAY:
- return ViewFilterOperandShared.IsToday;
- case ViewFilterOperand.VECTOR_SEARCH:
- return ViewFilterOperandShared.VectorSearch;
- default:
- throw new Error(`Invalid view filter operand: ${operand}`);
- }
-};
diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts b/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts
index ee8716a52c..28f15d5ffd 100644
--- a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts
+++ b/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts
@@ -1,9 +1,9 @@
import { Field, InputType } from '@nestjs/graphql';
import GraphQLJSON from 'graphql-type-json';
+import { ViewFilterOperand } from 'twenty-shared/types';
import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type';
@InputType()
diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts b/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts
index ee012d7b8d..0a481b7b49 100644
--- a/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts
+++ b/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts
@@ -2,9 +2,9 @@ import { Field, ObjectType, registerEnumType } from '@nestjs/graphql';
import { IDField } from '@ptc-org/nestjs-query-graphql';
import GraphQLJSON from 'graphql-type-json';
+import { ViewFilterOperand } from 'twenty-shared/types';
import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type';
registerEnumType(ViewFilterOperand, {
diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts b/packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts
index ff2bd329fe..89c6b03b38 100644
--- a/packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts
+++ b/packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts
@@ -1,3 +1,4 @@
+import { ViewFilterOperand } from 'twenty-shared/types';
import {
Column,
CreateDateColumn,
@@ -15,7 +16,6 @@ import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/inte
import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-filter-operand.ts b/packages/twenty-server/src/engine/core-modules/view/enums/view-filter-operand.ts
deleted file mode 100644
index 4b6a3a40c7..0000000000
--- a/packages/twenty-server/src/engine/core-modules/view/enums/view-filter-operand.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export enum ViewFilterOperand {
- IS = 'IS',
- IS_NOT_NULL = 'IS_NOT_NULL',
- IS_NOT = 'IS_NOT',
- LESS_THAN_OR_EQUAL = 'LESS_THAN_OR_EQUAL',
- GREATER_THAN_OR_EQUAL = 'GREATER_THAN_OR_EQUAL',
- IS_BEFORE = 'IS_BEFORE',
- IS_AFTER = 'IS_AFTER',
- CONTAINS = 'CONTAINS',
- DOES_NOT_CONTAIN = 'DOES_NOT_CONTAIN',
- IS_EMPTY = 'IS_EMPTY',
- IS_NOT_EMPTY = 'IS_NOT_EMPTY',
- IS_RELATIVE = 'IS_RELATIVE',
- IS_IN_PAST = 'IS_IN_PAST',
- IS_IN_FUTURE = 'IS_IN_FUTURE',
- IS_TODAY = 'IS_TODAY',
- VECTOR_SEARCH = 'VECTOR_SEARCH',
-}
diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts b/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts
index 10f708e174..1cc6e763c1 100644
--- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts
+++ b/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts
@@ -1,10 +1,10 @@
import { Test, type TestingModule } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm';
+import { ViewFilterOperand } from 'twenty-shared/types';
import { type Repository } from 'typeorm';
import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import {
ViewFilterException,
ViewFilterExceptionCode,
diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts
index 3c22cabcec..79d73dbf09 100644
--- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts
@@ -1,5 +1,4 @@
import { isString } from '@sniptt/guards';
-import { type ViewFilterOperand as SharedViewFilterOperand } from 'twenty-shared/types';
import { type DataSource, type QueryRunner } from 'typeorm';
import { v4 } from 'uuid';
@@ -29,7 +28,6 @@ import { workflowRunsAllView } from 'src/engine/workspace-manager/standard-objec
import { workflowVersionsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view';
import { workflowsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflows-all.view';
import { ViewOpenRecordInType } from 'src/modules/view/standard-objects/view.workspace-entity';
-import { convertViewFilterOperandToCoreOperand } from 'src/modules/view/utils/convert-view-filter-operand-to-core-operand.util';
type PrefillCoreViewsArgs = {
coreDataSource: DataSource;
@@ -176,9 +174,7 @@ const createCoreViews = async (
viewDefinition.filters.map((filter) => ({
fieldMetadataId: filter.fieldMetadataId,
viewId: viewDefinition.id,
- operand: convertViewFilterOperandToCoreOperand(
- filter.operand as SharedViewFilterOperand,
- ),
+ operand: filter.operand,
value: filter.value,
workspaceId,
}));
diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts
index 2b45d6920e..9330f08d8a 100644
--- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts
@@ -1,4 +1,5 @@
import { type MessageDescriptor } from '@lingui/core';
+import { type ViewFilterOperand } from 'twenty-shared/types';
import { type AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant';
import { type ViewOpenRecordInType } from 'src/modules/view/standard-objects/view.workspace-entity';
@@ -26,7 +27,7 @@ export interface ViewDefinition {
filters?: {
fieldMetadataId: string;
displayValue: string;
- operand: string;
+ operand: ViewFilterOperand;
value: string;
}[];
groups?: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts
index 2cebd480dc..fc9ebbed0d 100644
--- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts
@@ -1,4 +1,5 @@
import { msg } from '@lingui/core/macro';
+import { ViewFilterOperand } from 'twenty-shared/types';
import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import {
@@ -34,7 +35,7 @@ export const tasksAssignedToMeView = (
(field) => field.standardId === TASK_STANDARD_FIELD_IDS.assignee,
)?.id ?? '',
displayValue: 'Me',
- operand: 'is',
+ operand: ViewFilterOperand.IS,
value: JSON.stringify({
isCurrentWorkspaceMemberSelected: true,
selectedRecordIds: [],
diff --git a/packages/twenty-server/src/modules/view/utils/convert-view-filter-operand-to-core-operand.util.ts b/packages/twenty-server/src/modules/view/utils/convert-view-filter-operand-to-core-operand.util.ts
index 3607a34ad9..6985b21f8e 100644
--- a/packages/twenty-server/src/modules/view/utils/convert-view-filter-operand-to-core-operand.util.ts
+++ b/packages/twenty-server/src/modules/view/utils/convert-view-filter-operand-to-core-operand.util.ts
@@ -1,30 +1,26 @@
-import { ViewFilterOperand as SharedViewFilterOperand } from 'twenty-shared/types';
+import { ViewFilterOperand } from 'twenty-shared/types';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
-
-const operandMapping: Record = {
- [SharedViewFilterOperand.Is]: ViewFilterOperand.IS,
- [SharedViewFilterOperand.IsNotNull]: ViewFilterOperand.IS_NOT_NULL,
- [SharedViewFilterOperand.IsNot]: ViewFilterOperand.IS_NOT,
- [SharedViewFilterOperand.LessThanOrEqual]:
- ViewFilterOperand.LESS_THAN_OR_EQUAL,
- [SharedViewFilterOperand.GreaterThanOrEqual]:
- ViewFilterOperand.GREATER_THAN_OR_EQUAL,
- [SharedViewFilterOperand.IsBefore]: ViewFilterOperand.IS_BEFORE,
- [SharedViewFilterOperand.IsAfter]: ViewFilterOperand.IS_AFTER,
- [SharedViewFilterOperand.Contains]: ViewFilterOperand.CONTAINS,
- [SharedViewFilterOperand.DoesNotContain]: ViewFilterOperand.DOES_NOT_CONTAIN,
- [SharedViewFilterOperand.IsEmpty]: ViewFilterOperand.IS_EMPTY,
- [SharedViewFilterOperand.IsNotEmpty]: ViewFilterOperand.IS_NOT_EMPTY,
- [SharedViewFilterOperand.IsRelative]: ViewFilterOperand.IS_RELATIVE,
- [SharedViewFilterOperand.IsInPast]: ViewFilterOperand.IS_IN_PAST,
- [SharedViewFilterOperand.IsInFuture]: ViewFilterOperand.IS_IN_FUTURE,
- [SharedViewFilterOperand.IsToday]: ViewFilterOperand.IS_TODAY,
- [SharedViewFilterOperand.VectorSearch]: ViewFilterOperand.VECTOR_SEARCH,
+const operandMapping: Record = {
+ Is: ViewFilterOperand.IS,
+ IsNotNull: ViewFilterOperand.IS_NOT_NULL,
+ IsNot: ViewFilterOperand.IS_NOT,
+ LessThanOrEqual: ViewFilterOperand.LESS_THAN_OR_EQUAL,
+ GreaterThanOrEqual: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
+ IsBefore: ViewFilterOperand.IS_BEFORE,
+ IsAfter: ViewFilterOperand.IS_AFTER,
+ Contains: ViewFilterOperand.CONTAINS,
+ DoesNotContain: ViewFilterOperand.DOES_NOT_CONTAIN,
+ IsEmpty: ViewFilterOperand.IS_EMPTY,
+ IsNotEmpty: ViewFilterOperand.IS_NOT_EMPTY,
+ IsRelative: ViewFilterOperand.IS_RELATIVE,
+ IsInPast: ViewFilterOperand.IS_IN_PAST,
+ IsInFuture: ViewFilterOperand.IS_IN_FUTURE,
+ IsToday: ViewFilterOperand.IS_TODAY,
+ VectorSearch: ViewFilterOperand.VECTOR_SEARCH,
};
export const convertViewFilterOperandToCoreOperand = (
- sharedOperand: SharedViewFilterOperand,
+ sharedOperand: string,
): ViewFilterOperand => {
return operandMapping[sharedOperand];
};
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts
index ae488cebdc..fdee418038 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts
@@ -48,7 +48,7 @@ describe('evaluateFilterConditions', () => {
describe('Relation/UUID filter operands', () => {
it('should return true when values are equal (RELATION)', () => {
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'John',
'John',
'RELATION',
@@ -60,7 +60,7 @@ describe('evaluateFilterConditions', () => {
it('should return false when values are not equal (RELATION)', () => {
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'John',
'Jane',
'RELATION',
@@ -72,7 +72,7 @@ describe('evaluateFilterConditions', () => {
it('should return false when values are equal (IsNot RELATION)', () => {
const filter = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
'John',
'John',
'RELATION',
@@ -84,7 +84,7 @@ describe('evaluateFilterConditions', () => {
it('should return true when values are not equal (IsNot RELATION)', () => {
const filter = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
'John',
'Jane',
'RELATION',
@@ -101,7 +101,7 @@ describe('evaluateFilterConditions', () => {
const rightValue = uuid1;
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
leftObject,
rightValue,
'RELATION',
@@ -117,7 +117,7 @@ describe('evaluateFilterConditions', () => {
const rightObject = { id: uuid1, name: 'John Doe' };
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
leftValue,
rightObject,
'RELATION',
@@ -133,7 +133,7 @@ describe('evaluateFilterConditions', () => {
const rightObject = { id: uuid1, title: 'Admin' };
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
leftObject,
rightObject,
'RELATION',
@@ -150,7 +150,7 @@ describe('evaluateFilterConditions', () => {
const rightObject = { id: uuid2, name: 'Jane Smith' };
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
leftObject,
rightObject,
'RELATION',
@@ -167,7 +167,7 @@ describe('evaluateFilterConditions', () => {
const rightObject = { id: uuid2, name: 'Jane Smith' };
const filter = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
leftObject,
rightObject,
'RELATION',
@@ -182,7 +182,7 @@ describe('evaluateFilterConditions', () => {
const rightObject = { name: 'John Doe' };
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
leftObject,
rightObject,
'RELATION',
@@ -196,14 +196,14 @@ describe('evaluateFilterConditions', () => {
const uuid1 = '550e8400-e29b-41d4-a716-446655440000';
const uuid2 = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
const filter = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
uuid1,
uuid2,
'RELATION',
);
expect(() => evaluateFilterConditions({ filters: [filter] })).toThrow(
- 'Operand contains not supported for relation filter',
+ 'Operand CONTAINS not supported for relation filter',
);
});
});
@@ -213,14 +213,14 @@ describe('evaluateFilterConditions', () => {
const uuid2 = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
it('should return true when UUIDs are equal (Is)', () => {
- const filter = createFilter(ViewFilterOperand.Is, uuid1, uuid1, 'UUID');
+ const filter = createFilter(ViewFilterOperand.IS, uuid1, uuid1, 'UUID');
const result = evaluateFilterConditions({ filters: [filter] });
expect(result).toBe(true);
});
it('should return false when UUIDs are not equal (Is)', () => {
- const filter = createFilter(ViewFilterOperand.Is, uuid1, uuid2, 'UUID');
+ const filter = createFilter(ViewFilterOperand.IS, uuid1, uuid2, 'UUID');
const result = evaluateFilterConditions({ filters: [filter] });
expect(result).toBe(false);
@@ -228,7 +228,7 @@ describe('evaluateFilterConditions', () => {
it('should return false when UUIDs are equal (IsNot)', () => {
const filter = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
uuid1,
uuid1,
'UUID',
@@ -240,7 +240,7 @@ describe('evaluateFilterConditions', () => {
it('should return true when UUIDs are not equal (IsNot)', () => {
const filter = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
uuid1,
uuid2,
'UUID',
@@ -251,14 +251,14 @@ describe('evaluateFilterConditions', () => {
});
it('should handle null/undefined UUIDs with Is operand', () => {
- const filter1 = createFilter(ViewFilterOperand.Is, null, null, 'UUID');
+ const filter1 = createFilter(ViewFilterOperand.IS, null, null, 'UUID');
const filter2 = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
undefined,
undefined,
'UUID',
);
- const filter3 = createFilter(ViewFilterOperand.Is, uuid1, null, 'UUID');
+ const filter3 = createFilter(ViewFilterOperand.IS, uuid1, null, 'UUID');
expect(evaluateFilterConditions({ filters: [filter1] })).toBe(true);
expect(evaluateFilterConditions({ filters: [filter2] })).toBe(true);
@@ -267,19 +267,19 @@ describe('evaluateFilterConditions', () => {
it('should handle null/undefined UUIDs with IsNot operand', () => {
const filter1 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
null,
null,
'UUID',
);
const filter2 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
undefined,
undefined,
'UUID',
);
const filter3 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
uuid1,
null,
'UUID',
@@ -291,8 +291,8 @@ describe('evaluateFilterConditions', () => {
});
it('should handle empty string UUIDs', () => {
- const filter1 = createFilter(ViewFilterOperand.Is, '', '', 'UUID');
- const filter2 = createFilter(ViewFilterOperand.Is, uuid1, '', 'UUID');
+ const filter1 = createFilter(ViewFilterOperand.IS, '', '', 'UUID');
+ const filter2 = createFilter(ViewFilterOperand.IS, uuid1, '', 'UUID');
expect(evaluateFilterConditions({ filters: [filter1] })).toBe(true);
expect(evaluateFilterConditions({ filters: [filter2] })).toBe(false);
@@ -300,14 +300,14 @@ describe('evaluateFilterConditions', () => {
it('should throw error for unsupported UUID filter operand', () => {
const filter = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
uuid1,
uuid2,
'UUID',
);
expect(() => evaluateFilterConditions({ filters: [filter] })).toThrow(
- 'Operand contains not supported for uuid filter',
+ 'Operand CONTAINS not supported for uuid filter',
);
});
});
@@ -315,7 +315,7 @@ describe('evaluateFilterConditions', () => {
describe('Select filter operands', () => {
it('should return true when there are common values (SELECT)', () => {
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
['John'],
['John', 'Jane'],
'SELECT',
@@ -327,7 +327,7 @@ describe('evaluateFilterConditions', () => {
it('should return false when there are no common values (SELECT)', () => {
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
['John'],
['Jane'],
'SELECT',
@@ -339,7 +339,7 @@ describe('evaluateFilterConditions', () => {
it('should return true when there are no common values (IsNot)', () => {
const filter = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
['John'],
['Jane'],
'SELECT',
@@ -351,7 +351,7 @@ describe('evaluateFilterConditions', () => {
it('should return true when there are no values (IsEmpty)', () => {
const filter = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
[],
'',
'SELECT',
@@ -363,7 +363,7 @@ describe('evaluateFilterConditions', () => {
it('should return false when there is a value (IsEmpty)', () => {
const filter = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
['John'],
'',
'SELECT',
@@ -375,7 +375,7 @@ describe('evaluateFilterConditions', () => {
it('should return true when there are values (IsNotEmpty)', () => {
const filter = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
['John'],
'',
'SELECT',
@@ -389,7 +389,7 @@ describe('evaluateFilterConditions', () => {
describe('Boolean filter operands', () => {
it('should return true when boolean values are equal', () => {
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
true,
true,
'BOOLEAN',
@@ -401,7 +401,7 @@ describe('evaluateFilterConditions', () => {
it('should return false when boolean values are not equal', () => {
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
true,
false,
'BOOLEAN',
@@ -412,7 +412,7 @@ describe('evaluateFilterConditions', () => {
});
it('should handle truthy/falsy conversion', () => {
- const filter = createFilter(ViewFilterOperand.Is, 1, true, 'BOOLEAN');
+ const filter = createFilter(ViewFilterOperand.IS, 1, true, 'BOOLEAN');
const result = evaluateFilterConditions({ filters: [filter] });
expect(result).toBe(true);
@@ -422,19 +422,19 @@ describe('evaluateFilterConditions', () => {
describe('numeric operands', () => {
it('should handle GreaterThanOrEqual operand correctly', () => {
const filter1 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
25,
25,
'NUMBER',
);
const filter2 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
30,
25,
'NUMBER',
);
const filter3 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
20,
25,
'NUMBER',
@@ -447,19 +447,19 @@ describe('evaluateFilterConditions', () => {
it('should handle LessThanOrEqual operand correctly', () => {
const filter1 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
25,
25,
'NUMBER',
);
const filter2 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
20,
25,
'NUMBER',
);
const filter3 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
30,
25,
'NUMBER',
@@ -474,13 +474,13 @@ describe('evaluateFilterConditions', () => {
describe('string and array operands', () => {
it('should handle Contains operand with strings', () => {
const filter1 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello World',
'World',
'TEXT',
);
const filter2 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello',
'World',
'TEXT',
@@ -492,13 +492,13 @@ describe('evaluateFilterConditions', () => {
it('should handle DoesNotContain operand with strings', () => {
const filter1 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
'Hello World',
'World',
'TEXT',
);
const filter2 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
'Hello',
'World',
'TEXT',
@@ -510,13 +510,13 @@ describe('evaluateFilterConditions', () => {
it('should handle Contains operand with arrays', () => {
const filter1 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
['apple', 'banana', 'cherry'],
['apple'],
'ARRAY',
);
const filter2 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
['apple', 'banana', 'cherry'],
['grape'],
'ARRAY',
@@ -528,13 +528,13 @@ describe('evaluateFilterConditions', () => {
it('should handle DoesNotContain operand with arrays', () => {
const filter1 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
['apple', 'banana', 'cherry'],
['apple'],
'ARRAY',
);
const filter2 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
['apple', 'banana', 'cherry'],
['grape'],
'ARRAY',
@@ -548,26 +548,31 @@ describe('evaluateFilterConditions', () => {
describe('empty operands', () => {
it('should handle IsEmpty operand correctly', () => {
const filter1 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
null,
'',
'TEXT',
);
const filter2 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
undefined,
'',
'TEXT',
);
- const filter3 = createFilter(ViewFilterOperand.IsEmpty, '', '', 'TEXT');
+ const filter3 = createFilter(
+ ViewFilterOperand.IS_EMPTY,
+ '',
+ '',
+ 'TEXT',
+ );
const filter4 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
[],
'',
'ARRAY',
);
const filter5 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
'not empty',
'',
'TEXT',
@@ -582,31 +587,31 @@ describe('evaluateFilterConditions', () => {
it('should handle IsNotEmpty operand correctly', () => {
const filter1 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
'not empty',
'',
'TEXT',
);
const filter2 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
['item'],
'',
'ARRAY',
);
const filter3 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
null,
'',
'TEXT',
);
const filter4 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
'',
'',
'TEXT',
);
const filter5 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
[],
'',
'ARRAY',
@@ -628,7 +633,7 @@ describe('evaluateFilterConditions', () => {
it('should handle IsInPast operand correctly', () => {
const filter = createFilter(
- ViewFilterOperand.IsInPast,
+ ViewFilterOperand.IS_IN_PAST,
pastDate,
null,
'DATE',
@@ -637,7 +642,7 @@ describe('evaluateFilterConditions', () => {
expect(evaluateFilterConditions({ filters: [filter] })).toBe(true);
const futureFilter = createFilter(
- ViewFilterOperand.IsInPast,
+ ViewFilterOperand.IS_IN_PAST,
futureDate,
null,
'DATE',
@@ -650,7 +655,7 @@ describe('evaluateFilterConditions', () => {
it('should handle IsInFuture operand correctly', () => {
const filter = createFilter(
- ViewFilterOperand.IsInFuture,
+ ViewFilterOperand.IS_IN_FUTURE,
futureDate,
null,
'DATE',
@@ -659,7 +664,7 @@ describe('evaluateFilterConditions', () => {
expect(evaluateFilterConditions({ filters: [filter] })).toBe(true);
const pastFilter = createFilter(
- ViewFilterOperand.IsInFuture,
+ ViewFilterOperand.IS_IN_FUTURE,
pastDate,
null,
'DATE',
@@ -670,7 +675,7 @@ describe('evaluateFilterConditions', () => {
it('should handle IsToday operand correctly', () => {
const filter = createFilter(
- ViewFilterOperand.IsToday,
+ ViewFilterOperand.IS_TODAY,
today,
null,
'DATE',
@@ -679,7 +684,7 @@ describe('evaluateFilterConditions', () => {
expect(evaluateFilterConditions({ filters: [filter] })).toBe(true);
const pastFilter = createFilter(
- ViewFilterOperand.IsToday,
+ ViewFilterOperand.IS_TODAY,
pastDate,
null,
'DATE',
@@ -690,7 +695,7 @@ describe('evaluateFilterConditions', () => {
it('should handle IsBefore operand correctly', () => {
const filter = createFilter(
- ViewFilterOperand.IsBefore,
+ ViewFilterOperand.IS_BEFORE,
pastDate,
now,
'DATE',
@@ -699,7 +704,7 @@ describe('evaluateFilterConditions', () => {
expect(evaluateFilterConditions({ filters: [filter] })).toBe(true);
const futureFilter = createFilter(
- ViewFilterOperand.IsBefore,
+ ViewFilterOperand.IS_BEFORE,
futureDate,
now,
'DATE',
@@ -712,7 +717,7 @@ describe('evaluateFilterConditions', () => {
it('should handle IsAfter operand correctly', () => {
const filter = createFilter(
- ViewFilterOperand.IsAfter,
+ ViewFilterOperand.IS_AFTER,
futureDate,
now,
'DATE',
@@ -721,7 +726,7 @@ describe('evaluateFilterConditions', () => {
expect(evaluateFilterConditions({ filters: [filter] })).toBe(true);
const pastFilter = createFilter(
- ViewFilterOperand.IsAfter,
+ ViewFilterOperand.IS_AFTER,
pastDate,
now,
'DATE',
@@ -734,7 +739,7 @@ describe('evaluateFilterConditions', () => {
const sameDate1 = new Date('2023-01-15');
const sameDate2 = new Date('2023-01-15');
const filter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
sameDate1,
sameDate2,
'DATE',
@@ -744,7 +749,7 @@ describe('evaluateFilterConditions', () => {
const otherDate = new Date('2023-01-16');
const differentFilter = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
sameDate1,
otherDate,
'DATE',
@@ -757,7 +762,7 @@ describe('evaluateFilterConditions', () => {
it('should handle date IsEmpty and IsNotEmpty operands', () => {
const emptyFilter = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
null,
null,
'DATE',
@@ -766,7 +771,7 @@ describe('evaluateFilterConditions', () => {
expect(evaluateFilterConditions({ filters: [emptyFilter] })).toBe(true);
const notEmptyFilter = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
now,
null,
'DATE',
@@ -784,7 +789,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'CURRENCY',
rightOperand: 'USD',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'USD',
compositeFieldSubFieldName: 'currencyCode',
@@ -798,7 +803,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'CURRENCY',
rightOperand: 100,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 150,
compositeFieldSubFieldName: 'amountMicros',
@@ -822,7 +827,7 @@ describe('evaluateFilterConditions', () => {
it('should handle unsupported filter type with default filter logic', () => {
const filter = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello World',
'World',
'UNSUPPORTED_TYPE',
@@ -836,25 +841,25 @@ describe('evaluateFilterConditions', () => {
describe('unknown type filters', () => {
it('should handle Is operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'test',
'test',
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
'test',
'different',
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
null,
null,
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.Is,
+ ViewFilterOperand.IS,
undefined,
undefined,
'unknown',
@@ -868,25 +873,25 @@ describe('evaluateFilterConditions', () => {
it('should handle IsNot operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
'test',
'different',
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
'test',
'test',
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
null,
null,
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.IsNot,
+ ViewFilterOperand.IS_NOT,
undefined,
undefined,
'unknown',
@@ -900,62 +905,62 @@ describe('evaluateFilterConditions', () => {
it('should handle Contains operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello World',
'World',
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello',
'World',
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
[1, 2, 3],
2,
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
[1, 2, 3],
4,
'unknown',
);
const filter5 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
null,
null,
'unknown',
);
const filter6 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
undefined,
undefined,
'unknown',
);
const filter7 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello World',
undefined,
'unknown',
);
const filter8 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
'Hello World',
null,
'unknown',
);
const filter9 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
[1, 2, 3],
null,
'unknown',
);
const filter10 = createFilter(
- ViewFilterOperand.Contains,
+ ViewFilterOperand.CONTAINS,
[1, 2, 3],
undefined,
'unknown',
@@ -975,62 +980,62 @@ describe('evaluateFilterConditions', () => {
it('should handle DoesNotContain operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
'Hello',
'World',
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
'Hello World',
'World',
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
[1, 2, 3],
2,
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
[1, 2, 3],
4,
'unknown',
);
const filter5 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
null,
null,
'unknown',
);
const filter6 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
undefined,
undefined,
'unknown',
);
const filter7 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
'Hello World',
undefined,
'unknown',
);
const filter8 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
'Hello World',
null,
'unknown',
);
const filter9 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
[1, 2, 3],
null,
'unknown',
);
const filter10 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
[1, 2, 3],
undefined,
'unknown',
@@ -1050,31 +1055,31 @@ describe('evaluateFilterConditions', () => {
it('should handle IsEmpty operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
null,
'',
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
'not empty',
'',
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
'',
'',
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.DoesNotContain,
+ ViewFilterOperand.DOES_NOT_CONTAIN,
[],
'',
'unknown',
);
const filter5 = createFilter(
- ViewFilterOperand.IsEmpty,
+ ViewFilterOperand.IS_EMPTY,
undefined,
undefined,
'unknown',
@@ -1089,31 +1094,31 @@ describe('evaluateFilterConditions', () => {
it('should handle IsNotEmpty operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
'not empty',
'',
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
null,
'',
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
[],
'',
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
'',
'',
'unknown',
);
const filter5 = createFilter(
- ViewFilterOperand.IsNotEmpty,
+ ViewFilterOperand.IS_NOT_EMPTY,
undefined,
undefined,
'unknown',
@@ -1128,26 +1133,26 @@ describe('evaluateFilterConditions', () => {
it('should handle GreaterThanOrEqual operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
100,
50,
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
30,
50,
'unknown',
);
// strings are converted to numbers
const filter3 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
'1234',
'123',
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.GreaterThanOrEqual,
+ ViewFilterOperand.GREATER_THAN_OR_EQUAL,
undefined,
undefined,
'unknown',
@@ -1161,25 +1166,25 @@ describe('evaluateFilterConditions', () => {
it('should handle LessThanOrEqual operand with unknown type', () => {
const filter1 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
30,
50,
'unknown',
);
const filter2 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
100,
50,
'unknown',
);
const filter3 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
'1234',
'123',
'unknown',
);
const filter4 = createFilter(
- ViewFilterOperand.LessThanOrEqual,
+ ViewFilterOperand.LESS_THAN_OR_EQUAL,
undefined,
undefined,
'unknown',
@@ -1193,7 +1198,7 @@ describe('evaluateFilterConditions', () => {
it('should throw error for unsupported operand with unknown type', () => {
const filter = createFilter(
- ViewFilterOperand.VectorSearch,
+ ViewFilterOperand.VECTOR_SEARCH,
'test',
'search term',
'unknown',
@@ -1211,7 +1216,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'John',
},
@@ -1219,7 +1224,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 30,
},
@@ -1236,7 +1241,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'John',
},
@@ -1244,7 +1249,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 20, // This will fail
},
@@ -1271,7 +1276,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'John',
},
@@ -1279,7 +1284,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 30,
},
@@ -1303,7 +1308,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'Jane', // This will fail
},
@@ -1311,7 +1316,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 30,
},
@@ -1337,7 +1342,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'Jane', // This will fail
},
@@ -1345,7 +1350,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 30, // This will pass
},
@@ -1369,7 +1374,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'Jane', // This will fail
},
@@ -1377,7 +1382,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group1',
leftOperand: 20, // This will fail
},
@@ -1407,7 +1412,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'group1',
leftOperand: 'John',
},
@@ -1415,7 +1420,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'group2',
leftOperand: 30,
},
@@ -1453,7 +1458,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'child1',
leftOperand: 'Jane', // This will fail
},
@@ -1461,7 +1466,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter2',
type: 'RELATION',
rightOperand: 'Smith',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'child1',
leftOperand: 'Smith', // This will pass (OR group passes)
},
@@ -1469,7 +1474,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter3',
type: 'NUMBER',
rightOperand: 25,
- operand: ViewFilterOperand.GreaterThanOrEqual,
+ operand: ViewFilterOperand.GREATER_THAN_OR_EQUAL,
stepFilterGroupId: 'child2',
leftOperand: 30, // This will pass (AND group passes)
},
@@ -1510,7 +1515,7 @@ describe('evaluateFilterConditions', () => {
id: 'filter1',
type: 'RELATION',
rightOperand: 'John',
- operand: ViewFilterOperand.Is,
+ operand: ViewFilterOperand.IS,
stepFilterGroupId: 'nonexistent',
leftOperand: 'John',
},
diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts
index a8ca62c036..84cd856768 100644
--- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts
+++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts
@@ -122,14 +122,14 @@ function contains(leftValue: unknown, rightValue: unknown): boolean {
function evaluateTextAndArrayFilter(filter: ResolvedFilter): boolean {
switch (filter.operand) {
- case ViewFilterOperand.Contains:
+ case ViewFilterOperand.CONTAINS:
return contains(filter.leftOperand, filter.rightOperand);
- case ViewFilterOperand.DoesNotContain:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
return !contains(filter.leftOperand, filter.rightOperand);
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return !isNotEmptyTextOrArray(filter.leftOperand);
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return isNotEmptyTextOrArray(filter.leftOperand);
default:
@@ -145,7 +145,7 @@ function isNotEmptyTextOrArray(value: unknown): boolean {
function evaluateBooleanFilter(filter: ResolvedFilter): boolean {
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return Boolean(filter.leftOperand) === Boolean(filter.rightOperand);
default:
throw new Error(
@@ -158,47 +158,47 @@ function evaluateDateFilter(filter: ResolvedFilter): boolean {
const dateLeftValue = new Date(String(filter.leftOperand));
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return (
dateLeftValue.getDate() ===
new Date(String(filter.rightOperand)).getDate()
);
- case ViewFilterOperand.IsInPast:
+ case ViewFilterOperand.IS_IN_PAST:
return dateLeftValue.getTime() < Date.now();
- case ViewFilterOperand.IsInFuture:
+ case ViewFilterOperand.IS_IN_FUTURE:
return dateLeftValue.getTime() > Date.now();
- case ViewFilterOperand.IsToday:
+ case ViewFilterOperand.IS_TODAY:
return dateLeftValue.toDateString() === new Date().toDateString();
- case ViewFilterOperand.IsBefore:
+ case ViewFilterOperand.IS_BEFORE:
return (
dateLeftValue.getTime() <
new Date(String(filter.rightOperand)).getTime()
);
- case ViewFilterOperand.IsAfter:
+ case ViewFilterOperand.IS_AFTER:
return (
dateLeftValue.getTime() >
new Date(String(filter.rightOperand)).getTime()
);
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return (
filter.leftOperand === null ||
filter.leftOperand === undefined ||
filter.leftOperand === ''
);
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return (
filter.leftOperand !== null &&
filter.leftOperand !== undefined &&
filter.leftOperand !== ''
);
- case ViewFilterOperand.IsRelative:
+ case ViewFilterOperand.IS_RELATIVE:
return parseAndEvaluateRelativeDateFilter({
dateToCheck: dateLeftValue,
relativeDateString: String(filter.rightOperand),
@@ -213,9 +213,9 @@ function evaluateDateFilter(filter: ResolvedFilter): boolean {
function evaluateUuidFilter(filter: ResolvedFilter): boolean {
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return filter.leftOperand === filter.rightOperand;
- case ViewFilterOperand.IsNot:
+ case ViewFilterOperand.IS_NOT:
return filter.leftOperand !== filter.rightOperand;
default:
throw new Error(
@@ -237,9 +237,9 @@ function evaluateRelationFilter(filter: ResolvedFilter): boolean {
: filter.rightOperand;
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return leftValue === rightValue;
- case ViewFilterOperand.IsNot:
+ case ViewFilterOperand.IS_NOT:
return leftValue !== rightValue;
default:
throw new Error(
@@ -251,13 +251,13 @@ function evaluateRelationFilter(filter: ResolvedFilter): boolean {
function evaluateCurrencyFilter(filter: ResolvedFilter): boolean {
if (filter.compositeFieldSubFieldName === 'currencyCode') {
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return filter.leftOperand === filter.rightOperand;
- case ViewFilterOperand.IsNot:
+ case ViewFilterOperand.IS_NOT:
return filter.leftOperand !== filter.rightOperand;
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return !isNonEmptyString(filter.leftOperand);
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return isNonEmptyString(filter.leftOperand);
default:
throw new Error(
@@ -274,16 +274,16 @@ function evaluateNumberFilter(filter: ResolvedFilter): boolean {
const rightValue = filter.rightOperand;
switch (filter.operand) {
- case ViewFilterOperand.GreaterThanOrEqual:
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
return Number(leftValue) >= Number(rightValue);
- case ViewFilterOperand.LessThanOrEqual:
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL:
return Number(leftValue) <= Number(rightValue);
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return !isNonEmptyString(leftValue);
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return isNonEmptyString(leftValue);
default:
@@ -298,21 +298,21 @@ function evaluateDefaultFilter(filter: ResolvedFilter): boolean {
const rightValue = filter.rightOperand;
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return leftValue == rightValue;
- case ViewFilterOperand.IsNot:
+ case ViewFilterOperand.IS_NOT:
return leftValue != rightValue;
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return !isNotEmptyTextOrArray(leftValue);
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return isNotEmptyTextOrArray(leftValue);
- case ViewFilterOperand.Contains:
+ case ViewFilterOperand.CONTAINS:
return contains(leftValue, rightValue);
- case ViewFilterOperand.DoesNotContain:
+ case ViewFilterOperand.DOES_NOT_CONTAIN:
return !contains(leftValue, rightValue);
- case ViewFilterOperand.GreaterThanOrEqual:
+ case ViewFilterOperand.GREATER_THAN_OR_EQUAL:
return Number(leftValue) >= Number(rightValue);
- case ViewFilterOperand.LessThanOrEqual:
+ case ViewFilterOperand.LESS_THAN_OR_EQUAL:
return Number(leftValue) <= Number(rightValue);
default:
throw new Error(
@@ -323,14 +323,14 @@ function evaluateDefaultFilter(filter: ResolvedFilter): boolean {
function evaluateSelectFilter(filter: ResolvedFilter): boolean {
switch (filter.operand) {
- case ViewFilterOperand.Is:
+ case ViewFilterOperand.IS:
return contains(filter.leftOperand, filter.rightOperand);
- case ViewFilterOperand.IsNot:
+ case ViewFilterOperand.IS_NOT:
return !contains(filter.leftOperand, filter.rightOperand);
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return !isNotEmptyTextOrArray(filter.leftOperand);
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return isNotEmptyTextOrArray(filter.leftOperand);
default:
throw new Error(
diff --git a/packages/twenty-server/test/integration/graphql/suites/group-by-resolvers.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/group-by-resolvers.integration-spec.ts
index 3613b3c309..19027f1881 100644
--- a/packages/twenty-server/test/integration/graphql/suites/group-by-resolvers.integration-spec.ts
+++ b/packages/twenty-server/test/integration/graphql/suites/group-by-resolvers.integration-spec.ts
@@ -9,8 +9,8 @@ import { deleteOneOperationFactory } from 'test/integration/graphql/utils/delete
import { groupByOperationFactory } from 'test/integration/graphql/utils/group-by-operation-factory.util';
import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util';
import { findManyObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/find-many-object-metadata.util';
+import { ViewFilterOperand } from 'twenty-shared/types';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { type FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto';
import { ViewFilterGroupLogicalOperator } from 'src/modules/view/standard-objects/view-filter-group.workspace-entity';
diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts
index 9e47c3f4b5..8d7342e823 100644
--- a/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts
+++ b/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts
@@ -19,10 +19,9 @@ import {
assertViewFilterStructure,
cleanupViewRecords,
} from 'test/integration/utils/view-test.util';
-import { FieldMetadataType } from 'twenty-shared/types';
+import { FieldMetadataType, ViewFilterOperand } from 'twenty-shared/types';
import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import {
ViewFilterExceptionMessageKey,
generateViewFilterExceptionMessage,
diff --git a/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts
index 171870e3e8..c66ad91e45 100644
--- a/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts
+++ b/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts
@@ -1,3 +1,5 @@
+import { ViewFilterOperand } from 'twenty-shared/types';
+
import { type UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input';
import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity';
import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity';
@@ -6,7 +8,6 @@ import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view
import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity';
import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity';
import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in';
import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction';
import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum';
diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts
index 6963bb98a9..4c51314f80 100644
--- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts
+++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts
@@ -5,6 +5,7 @@ import { createOneObjectMetadata } from 'test/integration/metadata/suites/object
import { deleteOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util';
import { getMockCreateObjectInput } from 'test/integration/metadata/suites/object-metadata/utils/generate-mock-create-object-metadata-input';
import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util';
+import { updateFeatureFlag } from 'test/integration/metadata/suites/utils/update-feature-flag.util';
import {
createTestViewFilterWithRestApi,
createTestViewWithRestApi,
@@ -14,12 +15,11 @@ import { type EachTestingContext } from 'twenty-shared/testing';
import {
type EnumFieldMetadataType,
FieldMetadataType,
+ ViewFilterOperand,
} from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
-import { updateFeatureFlag } from 'test/integration/metadata/suites/utils/update-feature-flag.util';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum';
import { type ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type';
import {
diff --git a/packages/twenty-server/test/integration/rest/suites/view-filter.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/view-filter.integration-spec.ts
index 4b9b5db0dd..7587c8137c 100644
--- a/packages/twenty-server/test/integration/rest/suites/view-filter.integration-spec.ts
+++ b/packages/twenty-server/test/integration/rest/suites/view-filter.integration-spec.ts
@@ -20,9 +20,7 @@ import {
assertViewFilterStructure,
cleanupViewRecords,
} from 'test/integration/utils/view-test.util';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { ViewFilterOperand } from 'src/engine/core-modules/view/enums/view-filter-operand';
+import { FieldMetadataType, ViewFilterOperand } from 'twenty-shared/types';
describe('View Filter REST API', () => {
let testObjectMetadataId: string;
diff --git a/packages/twenty-shared/src/types/ViewFilterOperand.ts b/packages/twenty-shared/src/types/ViewFilterOperand.ts
index e677002710..3ed29194cd 100644
--- a/packages/twenty-shared/src/types/ViewFilterOperand.ts
+++ b/packages/twenty-shared/src/types/ViewFilterOperand.ts
@@ -1,18 +1,18 @@
export enum ViewFilterOperand {
- Is = 'is',
- IsNotNull = 'isNotNull',
- IsNot = 'isNot',
- LessThanOrEqual = 'lessThan', // TODO: we could change this to 'lessThanOrEqual' for consistency but it would require a migration
- GreaterThanOrEqual = 'greaterThan', // TODO: we could change this to 'greaterThanOrEqual' for consistency but it would require a migration
- IsBefore = 'isBefore',
- IsAfter = 'isAfter',
- Contains = 'contains',
- DoesNotContain = 'doesNotContain',
- IsEmpty = 'isEmpty',
- IsNotEmpty = 'isNotEmpty',
- IsRelative = 'isRelative',
- IsInPast = 'isInPast',
- IsInFuture = 'isInFuture',
- IsToday = 'isToday',
- VectorSearch = 'search',
+ IS = 'IS',
+ IS_NOT_NULL = 'IS_NOT_NULL',
+ IS_NOT = 'IS_NOT',
+ LESS_THAN_OR_EQUAL = 'LESS_THAN_OR_EQUAL', // TODO: we could change this to 'lessThanOrEqual' for consistency but it would require a migration
+ GREATER_THAN_OR_EQUAL = 'GREATER_THAN_OR_EQUAL', // TODO: we could change this to 'greaterThanOrEqual' for consistency but it would require a migration
+ IS_BEFORE = 'IS_BEFORE',
+ IS_AFTER = 'IS_AFTER',
+ CONTAINS = 'CONTAINS',
+ DOES_NOT_CONTAIN = 'DOES_NOT_CONTAIN',
+ IS_EMPTY = 'IS_EMPTY',
+ IS_NOT_EMPTY = 'IS_NOT_EMPTY',
+ IS_RELATIVE = 'IS_RELATIVE',
+ IS_IN_PAST = 'IS_IN_PAST',
+ IS_IN_FUTURE = 'IS_IN_FUTURE',
+ IS_TODAY = 'IS_TODAY',
+ VECTOR_SEARCH = 'VECTOR_SEARCH',
}
diff --git a/packages/twenty-shared/src/utils/filter/checkIfShouldSkipFiltering.ts b/packages/twenty-shared/src/utils/filter/checkIfShouldSkipFiltering.ts
index b4665beecd..4fe7e4e77c 100644
--- a/packages/twenty-shared/src/utils/filter/checkIfShouldSkipFiltering.ts
+++ b/packages/twenty-shared/src/utils/filter/checkIfShouldSkipFiltering.ts
@@ -12,9 +12,9 @@ export const checkIfShouldSkipFiltering = ({
const isAnEmptinessOperand = isEmptinessOperand(recordFilter.operand);
const isDateOperandWithoutValue = [
- RecordFilterOperand.IsInPast,
- RecordFilterOperand.IsInFuture,
- RecordFilterOperand.IsToday,
+ RecordFilterOperand.IS_IN_PAST,
+ RecordFilterOperand.IS_IN_FUTURE,
+ RecordFilterOperand.IS_TODAY,
].includes(recordFilter.operand);
const isFilterValueEmpty =
diff --git a/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForEmails.ts b/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForEmails.ts
index 6ffcf9f203..20620deb1a 100644
--- a/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForEmails.ts
+++ b/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForEmails.ts
@@ -25,7 +25,7 @@ export const computeGqlOperationFilterForEmails = ({
switch (subFieldName) {
case 'primaryEmail': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
primaryEmail: {
@@ -33,7 +33,7 @@ export const computeGqlOperationFilterForEmails = ({
},
} satisfies EmailsFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -51,7 +51,7 @@ export const computeGqlOperationFilterForEmails = ({
}
case 'additionalEmails': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
additionalEmails: {
@@ -59,7 +59,7 @@ export const computeGqlOperationFilterForEmails = ({
},
} satisfies EmailsFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
or: [
{
@@ -97,7 +97,7 @@ export const computeGqlOperationFilterForEmails = ({
}
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
or: [
{
@@ -116,7 +116,7 @@ export const computeGqlOperationFilterForEmails = ({
},
],
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
and: [
{
diff --git a/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForLinks.ts b/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForLinks.ts
index 5fe3aaa614..6ed34afb17 100644
--- a/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForLinks.ts
+++ b/packages/twenty-shared/src/utils/filter/compute-record-gql-operation-filter/for-composite-field/computeGqlOperationFilterForLinks.ts
@@ -19,7 +19,7 @@ export const computeGqlOperationFilterForLinks = ({
case 'primaryLinkLabel':
case 'primaryLinkUrl': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
[subFieldName]: {
@@ -27,7 +27,7 @@ export const computeGqlOperationFilterForLinks = ({
},
} satisfies LinksFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -46,7 +46,7 @@ export const computeGqlOperationFilterForLinks = ({
}
case 'secondaryLinks': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
secondaryLinks: {
@@ -54,7 +54,7 @@ export const computeGqlOperationFilterForLinks = ({
},
} satisfies LinksFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
or: [
{
@@ -91,7 +91,7 @@ export const computeGqlOperationFilterForLinks = ({
}
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
or: [
{
@@ -117,7 +117,7 @@ export const computeGqlOperationFilterForLinks = ({
},
],
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
and: [
{
diff --git a/packages/twenty-shared/src/utils/filter/isEmptinessOperand.ts b/packages/twenty-shared/src/utils/filter/isEmptinessOperand.ts
index 94528ab8ba..3f0f508a3f 100644
--- a/packages/twenty-shared/src/utils/filter/isEmptinessOperand.ts
+++ b/packages/twenty-shared/src/utils/filter/isEmptinessOperand.ts
@@ -1,7 +1,7 @@
import { ViewFilterOperand as RecordFilterOperand } from '@/types';
export const isEmptinessOperand = (operand: RecordFilterOperand): boolean => {
- return [RecordFilterOperand.IsEmpty, RecordFilterOperand.IsNotEmpty].includes(
+ return [RecordFilterOperand.IS_EMPTY, RecordFilterOperand.IS_NOT_EMPTY].includes(
operand,
);
};
diff --git a/packages/twenty-shared/src/utils/filter/turnRecordFilterIntoGqlOperationFilter.ts b/packages/twenty-shared/src/utils/filter/turnRecordFilterIntoGqlOperationFilter.ts
index c9ca89aef2..7d4e831c22 100644
--- a/packages/twenty-shared/src/utils/filter/turnRecordFilterIntoGqlOperationFilter.ts
+++ b/packages/twenty-shared/src/utils/filter/turnRecordFilterIntoGqlOperationFilter.ts
@@ -105,13 +105,13 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
switch (filterType) {
case 'TEXT':
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
ilike: `%${recordFilter.value}%`,
} as StringFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -127,7 +127,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'TS_VECTOR':
switch (recordFilter.operand) {
- case RecordFilterOperand.VectorSearch:
+ case RecordFilterOperand.VECTOR_SEARCH:
return {
[correspondingFieldMetadataItem.name]: {
search: recordFilter.value,
@@ -140,13 +140,13 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'RAW_JSON':
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
like: `%${recordFilter.value}%`,
} as RawJsonFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -167,28 +167,28 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
resolvedFilterValue instanceof Date ? resolvedFilterValue : now;
switch (recordFilter.operand) {
- case RecordFilterOperand.IsAfter: {
+ case RecordFilterOperand.IS_AFTER: {
return {
[correspondingFieldMetadataItem.name]: {
gt: date.toISOString(),
} as DateFilter,
};
}
- case RecordFilterOperand.IsBefore: {
+ case RecordFilterOperand.IS_BEFORE: {
return {
[correspondingFieldMetadataItem.name]: {
lt: date.toISOString(),
} as DateFilter,
};
}
- case RecordFilterOperand.IsRelative: {
+ case RecordFilterOperand.IS_RELATIVE: {
const dateRange = z
.object({ start: z.date(), end: z.date() })
.safeParse(resolvedFilterValue).data;
const defaultDateRange = resolveDateViewFilterValue({
value: 'PAST_1_DAY',
- operand: RecordFilterOperand.IsRelative,
+ operand: RecordFilterOperand.IS_RELATIVE,
});
if (!defaultDateRange) {
@@ -212,7 +212,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
],
};
}
- case RecordFilterOperand.Is: {
+ case RecordFilterOperand.IS: {
const isValid = resolvedFilterValue instanceof Date;
const date = isValid ? resolvedFilterValue : now;
@@ -231,19 +231,19 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
],
};
}
- case RecordFilterOperand.IsInPast:
+ case RecordFilterOperand.IS_IN_PAST:
return {
[correspondingFieldMetadataItem.name]: {
lte: now.toISOString(),
} as DateFilter,
};
- case RecordFilterOperand.IsInFuture:
+ case RecordFilterOperand.IS_IN_FUTURE:
return {
[correspondingFieldMetadataItem.name]: {
gte: now.toISOString(),
} as DateFilter,
};
- case RecordFilterOperand.IsToday: {
+ case RecordFilterOperand.IS_TODAY: {
return {
and: [
{
@@ -267,13 +267,13 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'RATING':
switch (recordFilter.operand) {
- case RecordFilterOperand.Is:
+ case RecordFilterOperand.IS:
return {
[correspondingFieldMetadataItem.name]: {
eq: convertRatingToRatingValue(parseFloat(recordFilter.value)),
} as RatingFilter,
};
- case RecordFilterOperand.GreaterThanOrEqual:
+ case RecordFilterOperand.GREATER_THAN_OR_EQUAL:
return {
[correspondingFieldMetadataItem.name]: {
in: convertGreaterThanOrEqualRatingToArrayOfRatingValues(
@@ -281,7 +281,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
),
} as RatingFilter,
};
- case RecordFilterOperand.LessThanOrEqual:
+ case RecordFilterOperand.LESS_THAN_OR_EQUAL:
return {
[correspondingFieldMetadataItem.name]: {
in: convertLessThanOrEqualRatingToArrayOfRatingValues(
@@ -296,19 +296,19 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'NUMBER':
switch (recordFilter.operand) {
- case RecordFilterOperand.GreaterThanOrEqual:
+ case RecordFilterOperand.GREATER_THAN_OR_EQUAL:
return {
[correspondingFieldMetadataItem.name]: {
gte: parseFloat(recordFilter.value),
} as FloatFilter,
};
- case RecordFilterOperand.LessThanOrEqual:
+ case RecordFilterOperand.LESS_THAN_OR_EQUAL:
return {
[correspondingFieldMetadataItem.name]: {
lte: parseFloat(recordFilter.value),
} as FloatFilter,
};
- case RecordFilterOperand.Is:
+ case RecordFilterOperand.IS:
return {
[correspondingFieldMetadataItem.name]: {
eq: parseFloat(recordFilter.value),
@@ -340,13 +340,13 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
if (!isDefined (recordIds) || recordIds.length === 0) return;
switch (recordFilter.operand) {
- case RecordFilterOperand.Is:
+ case RecordFilterOperand.IS:
return {
[correspondingFieldMetadataItem.name + 'Id']: {
in: recordIds,
} as RelationFilter,
};
- case RecordFilterOperand.IsNot: {
+ case RecordFilterOperand.IS_NOT: {
if (!isDefined (recordIds) || recordIds.length === 0) return;
return {
or: [
@@ -392,9 +392,9 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
};
switch (recordFilter.operand) {
- case RecordFilterOperand.Is:
+ case RecordFilterOperand.IS:
return gqlFilter;
- case RecordFilterOperand.IsNot:
+ case RecordFilterOperand.IS_NOT:
return {
not: gqlFilter,
};
@@ -412,25 +412,25 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
!isSubFieldFilter
) {
switch (recordFilter.operand) {
- case RecordFilterOperand.GreaterThanOrEqual:
+ case RecordFilterOperand.GREATER_THAN_OR_EQUAL:
return {
[correspondingFieldMetadataItem.name]: {
amountMicros: { gte: parseFloat(recordFilter.value) * 1000000 },
} as CurrencyFilter,
};
- case RecordFilterOperand.LessThanOrEqual:
+ case RecordFilterOperand.LESS_THAN_OR_EQUAL:
return {
[correspondingFieldMetadataItem.name]: {
amountMicros: { lte: parseFloat(recordFilter.value) * 1000000 },
} as CurrencyFilter,
};
- case RecordFilterOperand.Is:
+ case RecordFilterOperand.IS:
return {
[correspondingFieldMetadataItem.name]: {
amountMicros: { eq: parseFloat(recordFilter.value) * 1000000 },
} as CurrencyFilter,
};
- case RecordFilterOperand.IsNot:
+ case RecordFilterOperand.IS_NOT:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -465,7 +465,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
['firstName', 'lastName'],
);
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
if (!isSubFieldFilter) {
return {
or: fullNameFilters,
@@ -479,7 +479,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
};
}
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
if (!isSubFieldFilter) {
return {
and: fullNameFilters.map((filter) => {
@@ -507,7 +507,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'ADDRESS':
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
if (!isSubFieldFilter) {
return {
or: [
@@ -582,7 +582,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
};
}
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
if (!isSubFieldFilter) {
return {
and: [
@@ -778,7 +778,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
const nonEmptyOptions = options.filter((option: string) => option !== '');
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains: {
+ case RecordFilterOperand.CONTAINS: {
const conditions = [];
if (nonEmptyOptions.length > 0) {
@@ -799,7 +799,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
return conditions.length === 1 ? conditions[0] : { or: conditions };
}
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
or: [
{
@@ -836,7 +836,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
const nonEmptyOptions = options.filter((option: string) => option !== '');
switch (recordFilter.operand) {
- case RecordFilterOperand.Is: {
+ case RecordFilterOperand.IS: {
const conditions = [];
if (nonEmptyOptions.length > 0) {
@@ -857,7 +857,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
return conditions.length === 1 ? conditions[0] : { or: conditions };
}
- case RecordFilterOperand.IsNot: {
+ case RecordFilterOperand.IS_NOT: {
const conditions = [];
if (nonEmptyOptions.length > 0) {
@@ -890,13 +890,13 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'ARRAY': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
containsIlike: `%${recordFilter.value}%`,
} as ArrayFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -913,7 +913,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
case 'ACTOR': {
if (subFieldName === 'source') {
switch (recordFilter.operand) {
- case RecordFilterOperand.Is: {
+ case RecordFilterOperand.IS: {
if (recordFilter.value === '[]') {
return;
}
@@ -928,7 +928,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
};
}
- case RecordFilterOperand.IsNot: {
+ case RecordFilterOperand.IS_NOT: {
if (recordFilter.value === '[]') {
return;
}
@@ -960,7 +960,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
or: [
{
@@ -972,7 +972,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
],
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
and: [
{
@@ -1013,7 +1013,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
or: [
{
@@ -1039,7 +1039,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
],
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
and: [
{
@@ -1094,7 +1094,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
switch (subFieldName) {
case 'additionalPhones': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
or: [
{
@@ -1106,7 +1106,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
],
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
or: [
{
@@ -1135,7 +1135,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'primaryPhoneNumber': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
primaryPhoneNumber: {
@@ -1143,7 +1143,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
} as PhonesFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -1161,7 +1161,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
}
case 'primaryPhoneCallingCode': {
switch (recordFilter.operand) {
- case RecordFilterOperand.Contains:
+ case RecordFilterOperand.CONTAINS:
return {
[correspondingFieldMetadataItem.name]: {
primaryPhoneCallingCode: {
@@ -1169,7 +1169,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
},
} as PhonesFilter,
};
- case RecordFilterOperand.DoesNotContain:
+ case RecordFilterOperand.DOES_NOT_CONTAIN:
return {
not: {
[correspondingFieldMetadataItem.name]: {
@@ -1204,7 +1204,7 @@ export const turnRecordFilterIntoRecordGqlOperationFilter = ({
if (!isDefined (recordIds) || recordIds.length === 0) return;
switch (recordFilter.operand) {
- case RecordFilterOperand.Is:
+ case RecordFilterOperand.IS:
return {
[correspondingFieldMetadataItem.name]: {
in: recordIds,
diff --git a/packages/twenty-shared/src/utils/filter/utils/getEmptyRecordGqlOperationFilter.ts b/packages/twenty-shared/src/utils/filter/utils/getEmptyRecordGqlOperationFilter.ts
index c7c62d56a5..6f624b6625 100644
--- a/packages/twenty-shared/src/utils/filter/utils/getEmptyRecordGqlOperationFilter.ts
+++ b/packages/twenty-shared/src/utils/filter/utils/getEmptyRecordGqlOperationFilter.ts
@@ -392,9 +392,9 @@ export const getEmptyRecordGqlOperationFilter = ({
}
switch (operand) {
- case ViewFilterOperand.IsEmpty:
+ case ViewFilterOperand.IS_EMPTY:
return emptyRecordFilter;
- case ViewFilterOperand.IsNotEmpty:
+ case ViewFilterOperand.IS_NOT_EMPTY:
return {
not: emptyRecordFilter,
};
diff --git a/packages/twenty-shared/src/utils/filter/utils/resolveDateViewFilterValue.ts b/packages/twenty-shared/src/utils/filter/utils/resolveDateViewFilterValue.ts
index f952cbf631..481cf9b616 100644
--- a/packages/twenty-shared/src/utils/filter/utils/resolveDateViewFilterValue.ts
+++ b/packages/twenty-shared/src/utils/filter/utils/resolveDateViewFilterValue.ts
@@ -165,7 +165,7 @@ const resolveVariableDateViewFilterValue = (value?: string | null) => {
};
export type ResolvedDateViewFilterValue =
- O extends ViewFilterOperand.IsRelative
+ O extends ViewFilterOperand.IS_RELATIVE
? ReturnType
: Date | null;
@@ -176,7 +176,7 @@ export const resolveDateViewFilterValue = (
): ResolvedDateViewFilterValue => {
if (!viewFilter.value) return null;
- if (viewFilter.operand === ViewFilterOperand.IsRelative) {
+ if (viewFilter.operand === ViewFilterOperand.IS_RELATIVE) {
return resolveVariableDateViewFilterValue(
viewFilter.value,
) as ResolvedDateViewFilterValue;