Add KanbanFieldMetadataId on View standard object (#4604)

* Add KanbanFieldMetadataId on View standard object

* Deprecate Pipeline step

* Fix

* Use Constants instead of raw ids

* Fix

* Fix query runner

* Fix according to review

* Fix tests

* Fix tests

* Fix tests
This commit is contained in:
Charles Bochet
2024-03-21 18:08:27 +01:00
committed by GitHub
parent cc0e3c8a9a
commit 3fa8c4bace
36 changed files with 424 additions and 1486 deletions

View File

@ -6,7 +6,7 @@ const globalCoverage = {
};
const modulesCoverage = {
statements: 75,
statements: 70,
lines: 75,
functions: 70,
include: ['src/modules/**/*'],

View File

@ -15,7 +15,6 @@ export enum CoreObjectNameSingular {
MessageThread = 'messageThread',
Opportunity = 'opportunity',
Person = 'person',
PipelineStep = 'pipelineStep',
View = 'view',
ViewField = 'viewField',
ViewFilter = 'viewFilter',

View File

@ -150,7 +150,6 @@ personId
pointOfContactId
updatedAt
companyId
pipelineStepId
probability
closeDate
amount

View File

@ -78,7 +78,6 @@ personId
pointOfContactId
updatedAt
companyId
pipelineStepId
probability
closeDate
amount
@ -106,7 +105,6 @@ personId
pointOfContactId
updatedAt
companyId
pipelineStepId
probability
closeDate
amount

View File

@ -401,23 +401,6 @@ export const getObjectMetadataItemsMock = () => {
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-0a2e-4676-8011-3fdb2c30d7f8',
type: 'UUID',
name: 'pipelineStepId',
label: 'Pipeline Step ID (foreign key)',
description: 'Foreign key for pipeline step',
icon: null,
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-11-30T11:13:15.308Z',
updatedAt: '2023-11-30T11:13:15.308Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-3b9c-4e58-a3d2-c617d3b596b1',
@ -436,32 +419,63 @@ export const getObjectMetadataItemsMock = () => {
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-0a2e-4676-8011-3fdb2c30c258',
type: 'RELATION',
name: 'pipelineStep',
label: 'Pipeline Step',
description: 'Opportunity pipeline step',
icon: 'IconKanban',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-11-30T11:13:15.308Z',
updatedAt: '2023-11-30T11:13:15.308Z',
fromRelationMetadata: null,
toRelationMetadata: {
__typename: 'relation',
id: 'dfb44970-3e09-49f2-9f1d-51c8c451b8f5',
relationType: 'ONE_TO_MANY',
fromObjectMetadata: {
__typename: 'object',
id: '20202020-1029-4661-9e91-83bad932bdcd',
dataSourceId: '20202020-7f63-47a9-b1b3-6c7290ca9fb1',
nameSingular: 'pipelineStep',
namePlural: 'pipelineSteps',
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '20202020-46cc-42bb-90d5-c724921a012d',
type: 'SELECT',
name: 'stage',
label: 'Stage',
description: 'Opportunity stage',
icon: 'IconProgressCheck',
isCustom: false,
isActive: true,
isSystem: false,
isNullable: false,
createdAt: '2024-03-21T16:48:40.384Z',
updatedAt: '2024-03-21T16:48:40.384Z',
defaultValue: {
value: 'NEW',
},
fromFieldMetadataId: '20202020-22c4-443a-b114-43c97dda5867',
options: [
{
id: '20202020-aa3b-4c0b-bd90-9d071e3b9bf2',
color: 'red',
label: 'New',
value: 'NEW',
position: 0,
},
{
id: '20202020-8f9b-4bc3-b0a0-ce6a5085c1cf',
color: 'purple',
label: 'Screening',
value: 'SCREENING',
position: 1,
},
{
id: '20202020-9797-448d-81e4-49b055a1d19b',
color: 'sky',
label: 'Meeting',
value: 'MEETING',
position: 2,
},
{
id: '20202020-d542-479c-bc88-3c6d4ee78d09',
color: 'turquoise',
label: 'Proposal',
value: 'PROPOSAL',
position: 3,
},
{
id: '20202020-b69a-4c9c-ac16-adcba0ec972d',
color: 'yellow',
label: 'Customer',
value: 'CUSTOMER',
position: 4,
},
],
fromRelationMetadata: null,
toRelationMetadata: null,
},
},
{
@ -3537,155 +3551,6 @@ export const getObjectMetadataItemsMock = () => {
},
],
},
{
__typename: 'object',
id: '20202020-1029-4661-9e91-83bad932bdcd',
dataSourceId: '20202020-7f63-47a9-b1b3-6c7290ca9fb1',
nameSingular: 'pipelineStep',
namePlural: 'pipelineSteps',
labelSingular: 'Pipeline Step',
labelPlural: 'Pipeline Steps',
description: 'A pipeline step',
icon: 'IconLayoutKanban',
isCustom: false,
isActive: true,
isSystem: true,
createdAt: '2023-11-30T11:13:15.206Z',
updatedAt: '2023-11-30T11:13:15.206Z',
fields: [
{
__typename: 'field',
id: '20202020-f294-430e-b800-3a411fc05ad3',
type: 'TEXT',
name: 'name',
label: 'Name',
description: 'Pipeline Step name',
icon: 'IconCurrencyDollar',
isCustom: false,
isActive: true,
isSystem: false,
isNullable: false,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-039a-4fbd-b4c1-66dfa9e4bd3f',
type: 'UUID',
name: 'id',
label: 'Id',
description: null,
icon: null,
isCustom: false,
isActive: true,
isSystem: true,
isNullable: false,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-816f-4861-9b36-4a2f8ae2791c',
type: 'DATE_TIME',
name: 'createdAt',
label: 'Creation date',
description: null,
icon: 'IconCalendar',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: false,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-22c4-443a-b114-43c97dda5867',
type: 'RELATION',
name: 'opportunities',
label: 'Opportunities',
description: 'Opportunities linked to the step.',
icon: 'IconTargetArrow',
isCustom: false,
isActive: true,
isSystem: false,
isNullable: true,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: {
__typename: 'relation',
id: 'dfb44970-3e09-49f2-9f1d-51c8c451b8f5',
relationType: 'ONE_TO_MANY',
toObjectMetadata: {
__typename: 'object',
id: '20202020-cae9-4ff4-9579-f7d9fe44c937',
dataSourceId: '20202020-7f63-47a9-b1b3-6c7290ca9fb1',
nameSingular: 'opportunity',
namePlural: 'opportunities',
},
toFieldMetadataId: '20202020-0a2e-4676-8011-3fdb2c30c258',
},
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-6296-4cab-aafb-121ef5822b13',
type: 'NUMBER',
name: 'position',
label: 'Position',
description: 'Pipeline Step position',
icon: 'IconHierarchy2',
isCustom: false,
isActive: true,
isSystem: false,
isNullable: false,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-5b93-4b28-8c45-7988ea68f91b',
type: 'TEXT',
name: 'color',
label: 'Color',
description: 'Pipeline Step color',
icon: 'IconColorSwatch',
isCustom: false,
isActive: true,
isSystem: false,
isNullable: false,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
{
__typename: 'field',
id: '20202020-2d73-4829-b774-522c2f5627d7',
type: 'DATE_TIME',
name: 'updatedAt',
label: 'Update date',
description: null,
icon: 'IconCalendar',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: false,
createdAt: '2023-11-30T11:13:15.337Z',
updatedAt: '2023-11-30T11:13:15.337Z',
fromRelationMetadata: null,
toRelationMetadata: null,
},
],
},
];
// Todo fix typing here (the backend is not in sync with the frontend)

View File

@ -26,7 +26,7 @@ export const query = gql`
pointOfContactId
updatedAt
companyId
pipelineStepId
stage
probability
closeDate
amount {
@ -52,7 +52,7 @@ export const query = gql`
pointOfContactId
updatedAt
companyId
pipelineStepId
stage
probability
closeDate
amount {

View File

@ -16,12 +16,5 @@ export const filterAvailableTableColumns = (
return false;
}
if (
isFieldRelation(columnDefinition) &&
columnDefinition.metadata?.fieldName === 'pipelineStep'
) {
return false;
}
return true;
};

View File

@ -24,7 +24,7 @@ export const query = gql`
pointOfContactId
updatedAt
companyId
pipelineStepId
stage
probability
closeDate
amount {
@ -49,7 +49,7 @@ export const query = gql`
pointOfContactId
updatedAt
companyId
pipelineStepId
stage
probability
closeDate
amount {

View File

@ -401,8 +401,8 @@ export const SIGN_IN_BACKGROUND_MOCK_COMPANIES = [
__typename: 'Opportunity',
id: '53f66647-0543-4cc2-9f96-95cc699960f2',
probability: '0.5',
pipelineStepId: 'd8361722-03fb-4e65-bd4f-ec9e52e5ec0a',
pointOfContactId: '93c72d2e-f517-42fd-80ae-14173b3b70ae',
stage: 'NEW',
amount: {
__typename: 'Currency',
amountMicros: 2000000,
@ -609,7 +609,7 @@ export const SIGN_IN_BACKGROUND_MOCK_COMPANIES = [
__typename: 'Opportunity',
id: '81ab695d-2f89-406f-90ea-180f433b2445',
probability: '0.5',
pipelineStepId: '30b14887-d592-427d-bd97-6e670158db02',
stage: 'NEW',
pointOfContactId: '9b324a88-6784-4449-afdf-dc62cb8702f2',
amount: {
__typename: 'Currency',
@ -629,7 +629,7 @@ export const SIGN_IN_BACKGROUND_MOCK_COMPANIES = [
__typename: 'Opportunity',
id: '9b059852-35b1-4045-9cde-42f715148954',
probability: '0.5',
pipelineStepId: '30b14887-d592-427d-bd97-6e670158db02',
stage: 'NEW',
pointOfContactId: '98406e26-80f1-4dff-b570-a74942528de3',
amount: {
__typename: 'Currency',
@ -1157,7 +1157,7 @@ export const SIGN_IN_BACKGROUND_MOCK_COMPANIES = [
__typename: 'Opportunity',
id: '7c887ee3-be10-412b-a663-16bd3c2228e1',
probability: '0.5',
pipelineStepId: '6edf4ead-006a-46e1-9c6d-228f1d0143c9',
stage: 'NEW',
pointOfContactId: '86083141-1c0e-494c-a1b6-85b1c6fefaa5',
amount: {
__typename: 'Currency',

View File

@ -1184,220 +1184,6 @@ export const mockedCompaniesMetadata = {
},
} as ObjectEdge;
export const mockedPipelineStepsMetadata = {
__typename: 'objectEdge',
node: {
__typename: 'object',
id: 'afa12866-0de4-4f97-97fa-cd8a7c953037',
dataSourceId: 'cabbcaa6-05d6-41f4-920f-9144172a4f08',
nameSingular: 'pipelineStep',
namePlural: 'pipelineSteps',
labelSingular: 'Pipeline Step',
labelPlural: 'Pipeline Steps',
description: 'A pipeline step',
icon: 'IconLayoutKanban',
isCustom: false,
isActive: true,
isSystem: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
labelIdentifierFieldMetadataId: null,
imageIdentifierFieldMetadataId: null,
fields: {
__typename: 'ObjectFieldsConnection',
edges: [
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '202efca6-9820-4e4a-9a27-f362dc5b46ed',
type: FieldMetadataType.Uuid,
name: 'id',
label: 'Id',
description: null,
icon: null,
isCustom: false,
isActive: true,
isSystem: true,
isNullable: false,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: {
type: FieldMetadataType.Uuid,
},
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: 'c9b9d516-10d2-4eca-94ce-a872547f429f',
type: FieldMetadataType.Text,
name: 'color',
label: 'Color',
description: 'Pipeline Step color',
icon: 'IconColorSwatch',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: {
value: '',
},
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '7928241f-6fe9-4ab2-84c6-7e84c5bea05f',
type: FieldMetadataType.DateTime,
name: 'updatedAt',
label: 'Update date',
description: null,
icon: 'IconCalendar',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: false,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: {
type: 'now',
},
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: 'ad3e919f-4258-4e21-8caf-bf122f17ca5c',
type: FieldMetadataType.Relation,
name: 'opportunities',
label: 'Opportunities',
description: 'Opportunities linked to the step.',
icon: 'IconTargetArrow',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: {
__typename: 'relation',
id: '7b0474c4-d82d-4c1d-96de-c6728b53339a',
relationType: RelationMetadataType.OneToMany,
toObjectMetadata: {
__typename: 'object',
id: '941ad274-2d26-4e90-94d9-5e446aa5b91e',
dataSourceId: 'cabbcaa6-05d6-41f4-920f-9144172a4f08',
nameSingular: 'opportunity',
namePlural: 'opportunities',
isSystem: true,
},
toFieldMetadataId: '4756a816-8a18-433a-9414-c756db4727e8',
},
toRelationMetadata: null,
options: [],
defaultValue: null,
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: 'c26ba58c-5629-4a6b-ae7f-5c06d3045a9b',
type: FieldMetadataType.DateTime,
name: 'createdAt',
label: 'Creation date',
description: null,
icon: 'IconCalendar',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: false,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: {
type: 'now',
},
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '4f383c05-3f9b-433a-8617-20ed3861e490',
type: FieldMetadataType.Text,
name: 'name',
label: 'Name',
description: 'Pipeline Step name',
icon: 'IconCurrencyDollar',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: {
value: '',
},
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '8c712fbc-306f-4534-86c1-caae09b840a2',
type: FieldMetadataType.Number,
name: 'position',
label: 'Position',
description: 'Pipeline Step position',
icon: 'IconHierarchy2',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: {
value: 0,
},
},
},
],
pageInfo: {
__typename: 'PageInfo',
hasNextPage: false,
hasPreviousPage: false,
startCursor: 'YXJyYXljb25uZWN0aW9uOjA=',
endCursor: 'YXJyYXljb25uZWN0aW9uOjY=',
},
totalCount: 7,
},
},
};
const mockedCalendarEventsMetadata = {
__typename: 'objectEdge',
node: {
@ -4837,63 +4623,6 @@ export const mockedOpportunitiesMetadata = {
defaultValue: null,
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '480e430d-ec7b-4297-93fd-0c6463b9fad3',
type: FieldMetadataType.Uuid,
name: 'pipelineStepId',
label: 'Pipeline Step id (foreign key)',
description: 'Opportunity pipeline step id foreign key',
icon: 'IconKanban',
isCustom: false,
isActive: true,
isSystem: true,
isNullable: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
toRelationMetadata: null,
options: [],
defaultValue: null,
},
},
{
__typename: 'fieldEdge',
node: {
__typename: 'field',
id: '4756a816-8a18-433a-9414-c756db4727e8',
type: FieldMetadataType.Relation,
name: 'pipelineStep',
label: 'Pipeline Step',
description: 'Opportunity pipeline step',
icon: 'IconKanban',
isCustom: false,
isActive: true,
isSystem: false,
isNullable: true,
createdAt: '2023-12-15T15:29:39.070Z',
updatedAt: '2023-12-15T15:29:39.070Z',
fromRelationMetadata: null,
options: [],
toRelationMetadata: {
__typename: 'relation',
id: '7b0474c4-d82d-4c1d-96de-c6728b53339a',
relationType: RelationMetadataType.OneToMany,
fromObjectMetadata: {
__typename: 'object',
id: 'afa12866-0de4-4f97-97fa-cd8a7c953037',
dataSourceId: 'cabbcaa6-05d6-41f4-920f-9144172a4f08',
nameSingular: 'pipelineStep',
namePlural: 'pipelineSteps',
isSystem: true,
},
fromFieldMetadataId: 'ad3e919f-4258-4e21-8caf-bf122f17ca5c',
},
defaultValue: null,
},
},
{
__typename: 'fieldEdge',
node: {
@ -7501,7 +7230,6 @@ export const mockedObjectMetadataItems = {
mockedWebhooksMetadata,
mockedPeopleMetadata,
mockedCompaniesMetadata,
mockedPipelineStepsMetadata,
mockedActivityTargetsMetadata,
mockedActivitiesMetadata,
mockedFavoritesMetadata,