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 71e276cd9da..2e86196ecef 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 8ebb1e776a2..45b4e81145a 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 560d4861b1f..662ead1e935 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 cd29e7fb161..b22bf994d08 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 9cb0e5eb34e..62a3fa45106 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 6271a5516e0..3136ee30ab9 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 a19e2a4ce04..8cede443bdb 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 de09d92e737..0581f10811e 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 bae4b1bdb7a..9e07838fade 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 da44c734314..63e34c6fe74 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 862910bd301..3f12e3ab61c 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 2dc1918c847..e8ef38c5058 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 21c705c3142..091f2ac3fbd 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 6b6d9f1bdaf..6d3e4a46795 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 330acf09a21..e93c99cf6b3 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 6b86d72acb6..32f2f92d920 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 b7a0f1534dc..474fd170e98 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 e6051524346..86778d99399 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 6e9e0631633..da2d8b82a45 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 7d9e7e1681c..6f03493f8f3 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 8316aea7975..63578e41c90 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 ad7744ec0f3..074f65e2d69 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 2ab17935a85..ed6cab4c151 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 e172f5c6e25..20cd12385f4 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 15c6eaa7593..8e41c7d3557 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 d39e9e4ad22..a246bae826c 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 cb73cddd431..b7151e7e788 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 6417ac1a97e..b431b04fa2a 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 bbefbce0b35..b9342b89524 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 ed3a4852a47..8e20c75771c 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 19d8c36c00a..74bad6b7fe7 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 56efb267e66..f6f0ee38365 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 43cf10be2f9..58c98872e62 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 509f5e08482..5fc0d0245b5 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 b9cbd4f747e..2b12a675e43 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 b402584c0a3..9ff907e04e6 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 5f0ca977e16..24337959de0 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 0986a1575cc..1aa444f55dd 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 b983e3b414d..050662e96b4 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 bce7bd409e9..89157e06738 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 6207223057c..15a09653a5a 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 c38102dfb68..5981a3d6aa6 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 890e349513f..3013a646e74 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 8da7057babd..566070c54e5 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 6428c78d295..85fdc6eb8fd 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 ee9f1949c76..4570ff6e683 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 256942178ea..edac6289318 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 54ee596e9eb..00000000000
--- 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 23fad588b71..00000000000
--- 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 0df5dfcf7d8..ee925b5cc61 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 6f6a6cb81ec..350bfd7f4bd 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 9f1dcf27cfa..626db4c7368 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 cb019d82225..02e358015e6 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 9ba2586f16a..e22f44cb776 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 f96aa941210..f703952c870 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 23e02faec14..bbd6869a0d7 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 7ef34351ad2..4731ecc2af7 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 c80e9f41df2..911d23b0b30 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 4e288605b1e..79269347859 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 71c3218a5b3..db134d186d6 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 331e21bd382..f9b91c6e3d2 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 a486f275767..00000000000
--- 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 ee8716a52ca..28f15d5ffdf 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 ee012d7b8da..0a481b7b49b 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 ff2bd329fe6..89c6b03b385 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 4b6a3a40c77..00000000000
--- 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 10f708e1741..1cc6e763c1a 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 3c22cabcec7..79d73dbf09e 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 2b45d6920e2..9330f08d8ae 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 2cebd480dc7..fc9ebbed0d7 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 3607a34ad97..6985b21f8e5 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 ae488cebdca..fdee4180381 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 a8ca62c036b..84cd856768f 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 3613b3c309e..19027f1881c 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 9e47c3f4b57..8d7342e823c 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 171870e3e83..c66ad91e45e 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 6963bb98a9d..4c51314f807 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 4b9b5db0dd5..7587c8137ce 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 e6770027109..3ed29194cd3 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 b4665beecd0..4fe7e4e77c6 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 6ffcf9f203a..20620deb1a3 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 5fe3aaa6141..6ed34afb17d 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 94528ab8ba5..3f0f508a3f0 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 c9ca89aef2c..7d4e831c228 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 c7c62d56a58..6f624b6625f 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 f952cbf6317..481cf9b616d 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;