Refactor builder to embed Object validation create/delete/update (#13934)
# Introduction Moving validation directly in the builder that has the perfect granularity to do it. When importing we won't have to infer and dispatch on the operation nature ( update delete create ) and validate accordingly ## Objects Only migrated object validation for the moment even though create object involves a validate flat field metadata creation call too ## TODO - improve `otherFlatObjectMetadataMapsToValidate` naming too vague ## Next - handle fields validation within fields actions build - Unit test coverage validation issue on builder and validate - integration test plugging with new feature flag ## Manual tested - Update - Delete - Create TODO
This commit is contained in:
+864
@@ -0,0 +1,864 @@
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
|
||||
import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface';
|
||||
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
|
||||
|
||||
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
|
||||
|
||||
export const FAVORITE_FLAT_FIELDS_MOCK = {
|
||||
position: getFlatFieldMetadataMock({
|
||||
id: '64dbf3ef-a352-44bb-9055-f95822f18d0a',
|
||||
standardId: '20202020-dd26-42c6-8c3c-2a7598c204f6',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.NUMBER,
|
||||
name: 'position',
|
||||
label: 'Position',
|
||||
defaultValue: 0,
|
||||
description: 'Favorite position',
|
||||
icon: 'IconList',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: null,
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-dd26-42c6-8c3c-2a7598c204f6',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
id: getFlatFieldMetadataMock({
|
||||
id: '49f58497-4e7c-49e6-b3bc-c91d4b8a8ddc',
|
||||
standardId: '20202020-eda0-4cee-9577-3eb357e3c22b',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.UUID,
|
||||
name: 'id',
|
||||
label: 'Id',
|
||||
defaultValue: 'uuid',
|
||||
description: 'Id',
|
||||
icon: 'Icon123',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: null,
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
createdAt: getFlatFieldMetadataMock({
|
||||
id: '0606a76c-8a72-48ca-90c6-526c729c25eb',
|
||||
standardId: '20202020-66ac-4502-9975-e4d959c50311',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
defaultValue: 'now',
|
||||
description: 'Creation date',
|
||||
icon: 'IconCalendar',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { displayFormat: DateDisplayFormat.RELATIVE },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
updatedAt: getFlatFieldMetadataMock({
|
||||
id: 'fb202982-0c8e-4917-8dda-acb8248be749',
|
||||
standardId: '20202020-d767-4622-bdcf-d8a084834d86',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Last update',
|
||||
defaultValue: 'now',
|
||||
description: 'Last time the record was changed',
|
||||
icon: 'IconCalendarClock',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { displayFormat: DateDisplayFormat.RELATIVE },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
deletedAt: getFlatFieldMetadataMock({
|
||||
id: 'ef52e151-a974-470f-bbe7-f345fd4eca65',
|
||||
standardId: '20202020-b9a7-48d8-8387-b9a3090a50ec',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'deletedAt',
|
||||
label: 'Deleted at',
|
||||
defaultValue: null,
|
||||
description: 'Date when the record was deleted',
|
||||
icon: 'IconCalendarMinus',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { displayFormat: DateDisplayFormat.RELATIVE },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
forWorkspaceMember: getFlatFieldMetadataMock({
|
||||
id: '07f2c3ba-63d1-4e44-bac4-bc4591e51bac',
|
||||
standardId: '20202020-ce63-49cb-9676-fdc0c45892cd',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'forWorkspaceMember',
|
||||
label: 'Workspace Member',
|
||||
defaultValue: null,
|
||||
description: 'Favorite workspace member',
|
||||
icon: 'IconCircleUser',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'forWorkspaceMemberId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: 'a15a4b41-1849-4dea-aa43-f53caad016be',
|
||||
relationTargetObjectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
|
||||
uniqueIdentifier: '20202020-ce63-49cb-9676-fdc0c45892cd',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: 'a15a4b41-1849-4dea-aa43-f53caad016be',
|
||||
standardId: '20202020-f3c1-4faf-b343-cf7681038757',
|
||||
objectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the workspace member',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '07f2c3ba-63d1-4e44-bac4-bc4591e51bac',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-f3c1-4faf-b343-cf7681038757',
|
||||
}),
|
||||
}),
|
||||
person: getFlatFieldMetadataMock({
|
||||
id: '013cec20-e9cc-42db-b9b9-ff6bd0f52abd',
|
||||
standardId: '20202020-c428-4f40-b6f3-86091511c41c',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'person',
|
||||
label: 'Person',
|
||||
defaultValue: null,
|
||||
description: 'Favorite person',
|
||||
icon: 'IconUser',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'personId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'a1a72bee-1c15-4598-ba23-67ba8e3e505d',
|
||||
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
|
||||
uniqueIdentifier: '20202020-c428-4f40-b6f3-86091511c41c',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: 'a1a72bee-1c15-4598-ba23-67ba8e3e505d',
|
||||
standardId: '20202020-4073-4117-9cf1-203bcdc91cbd',
|
||||
objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the contact',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '013cec20-e9cc-42db-b9b9-ff6bd0f52abd',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-4073-4117-9cf1-203bcdc91cbd',
|
||||
}),
|
||||
}),
|
||||
company: getFlatFieldMetadataMock({
|
||||
id: '9a11532c-6839-46ed-a2f5-ed03f88b86f6',
|
||||
standardId: '20202020-cff5-4682-8bf9-069169e08279',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'company',
|
||||
label: 'Company',
|
||||
defaultValue: null,
|
||||
description: 'Favorite company',
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'companyId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '72415216-fed4-450b-aa00-691e37718b01',
|
||||
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
|
||||
uniqueIdentifier: '20202020-cff5-4682-8bf9-069169e08279',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '72415216-fed4-450b-aa00-691e37718b01',
|
||||
standardId: '20202020-4d1d-41ac-b13b-621631298d55',
|
||||
objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the company',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '9a11532c-6839-46ed-a2f5-ed03f88b86f6',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-4d1d-41ac-b13b-621631298d55',
|
||||
}),
|
||||
}),
|
||||
favoriteFolder: getFlatFieldMetadataMock({
|
||||
id: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
|
||||
standardId: '20202020-f658-4d12-8b4d-248356aa4bd9',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favoriteFolder',
|
||||
label: 'Favorite Folder',
|
||||
defaultValue: null,
|
||||
description: 'The folder this favorite belongs to',
|
||||
icon: 'IconFolder',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'favoriteFolderId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
|
||||
relationTargetObjectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
uniqueIdentifier: '20202020-f658-4d12-8b4d-248356aa4bd9',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
|
||||
standardId: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites in this folder',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
|
||||
}),
|
||||
}),
|
||||
opportunity: getFlatFieldMetadataMock({
|
||||
id: '6380cf8e-4327-4d1e-ad21-1826ce4ecf05',
|
||||
standardId: '20202020-dabc-48e1-8318-2781a2b32aa2',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'opportunity',
|
||||
label: 'Opportunity',
|
||||
defaultValue: null,
|
||||
description: 'Favorite opportunity',
|
||||
icon: 'IconTargetArrow',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'opportunityId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '87bb9924-a1cc-4357-9c8a-52141dabf266',
|
||||
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
|
||||
uniqueIdentifier: '20202020-dabc-48e1-8318-2781a2b32aa2',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '87bb9924-a1cc-4357-9c8a-52141dabf266',
|
||||
standardId: '20202020-a1c2-4500-aaae-83ba8a0e827a',
|
||||
objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the opportunity',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '6380cf8e-4327-4d1e-ad21-1826ce4ecf05',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-a1c2-4500-aaae-83ba8a0e827a',
|
||||
}),
|
||||
}),
|
||||
workflow: getFlatFieldMetadataMock({
|
||||
id: '12c20527-9b1d-4922-9650-00cc31b26387',
|
||||
standardId: '20202020-b11b-4dc8-999a-6bd0a947b463',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'workflow',
|
||||
label: 'Workflow',
|
||||
defaultValue: null,
|
||||
description: 'Favorite workflow',
|
||||
icon: 'IconSettingsAutomation',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'workflowId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'b848abe8-276b-46c9-9eab-baf34d2a0583',
|
||||
relationTargetObjectMetadataId: '664c19a5-0693-45d4-a4e5-76c3717db83c',
|
||||
uniqueIdentifier: '20202020-b11b-4dc8-999a-6bd0a947b463',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: 'b848abe8-276b-46c9-9eab-baf34d2a0583',
|
||||
standardId: '20202020-c554-4c41-be7a-cf9cd4b0d512',
|
||||
objectMetadataId: '664c19a5-0693-45d4-a4e5-76c3717db83c',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the workflow',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '12c20527-9b1d-4922-9650-00cc31b26387',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-c554-4c41-be7a-cf9cd4b0d512',
|
||||
}),
|
||||
}),
|
||||
workflowVersion: getFlatFieldMetadataMock({
|
||||
id: '5cb92f25-c067-4e19-afb3-c7cc038ed1a4',
|
||||
standardId: '20202020-e1b8-4caf-b55a-3ab4d4cbcd21',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'workflowVersion',
|
||||
label: 'Workflow',
|
||||
defaultValue: null,
|
||||
description: 'Favorite workflow version',
|
||||
icon: 'IconSettingsAutomation',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'workflowVersionId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: 'ea6b6bda-6ba7-4549-b81a-1f3ced0d4b25',
|
||||
relationTargetObjectMetadataId: '99cf5f27-b41d-4f25-a23b-9e47d27dae9b',
|
||||
uniqueIdentifier: '20202020-e1b8-4caf-b55a-3ab4d4cbcd21',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: 'ea6b6bda-6ba7-4549-b81a-1f3ced0d4b25',
|
||||
standardId: '20202020-b8e0-4e57-928d-b51671cc71f2',
|
||||
objectMetadataId: '99cf5f27-b41d-4f25-a23b-9e47d27dae9b',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the workflow version',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '5cb92f25-c067-4e19-afb3-c7cc038ed1a4',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-b8e0-4e57-928d-b51671cc71f2',
|
||||
}),
|
||||
}),
|
||||
workflowRun: getFlatFieldMetadataMock({
|
||||
id: 'a4bdd0d8-c36f-4519-812b-be4800ab14b0',
|
||||
standardId: '20202020-db5a-4fe4-9a13-9afa22b1e762',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'workflowRun',
|
||||
label: 'Workflow',
|
||||
defaultValue: null,
|
||||
description: 'Favorite workflow run',
|
||||
icon: 'IconSettingsAutomation',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'workflowRunId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: '444a6e9e-443d-4f04-a60d-32f76f17049c',
|
||||
relationTargetObjectMetadataId: '06d95e96-b050-443f-946e-dd276d291a2f',
|
||||
uniqueIdentifier: '20202020-db5a-4fe4-9a13-9afa22b1e762',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '444a6e9e-443d-4f04-a60d-32f76f17049c',
|
||||
standardId: '20202020-4baf-4604-b899-2f7fcfbbf90d',
|
||||
objectMetadataId: '06d95e96-b050-443f-946e-dd276d291a2f',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the workflow run',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'a4bdd0d8-c36f-4519-812b-be4800ab14b0',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-4baf-4604-b899-2f7fcfbbf90d',
|
||||
}),
|
||||
}),
|
||||
task: getFlatFieldMetadataMock({
|
||||
id: 'db16ab78-ea3f-4b67-93e3-6ad9ab1b7273',
|
||||
standardId: '20202020-1b1b-4b3b-8b1b-7f8d6a1d7d5c',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'task',
|
||||
label: 'Task',
|
||||
defaultValue: null,
|
||||
description: 'Favorite task',
|
||||
icon: 'IconCheckbox',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'taskId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '33e4eff0-ff0f-4530-802a-cd630481ee84',
|
||||
relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
|
||||
uniqueIdentifier: '20202020-1b1b-4b3b-8b1b-7f8d6a1d7d5c',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '33e4eff0-ff0f-4530-802a-cd630481ee84',
|
||||
standardId: '20202020-4d1d-41ac-b13b-621631298d65',
|
||||
objectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the task',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'db16ab78-ea3f-4b67-93e3-6ad9ab1b7273',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-4d1d-41ac-b13b-621631298d65',
|
||||
}),
|
||||
}),
|
||||
note: getFlatFieldMetadataMock({
|
||||
id: 'a61baf0f-2d43-4fda-9baf-efb000c17ecd',
|
||||
standardId: '20202020-1f25-43fe-8b00-af212fdde824',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'note',
|
||||
label: 'Note',
|
||||
defaultValue: null,
|
||||
description: 'Favorite note',
|
||||
icon: 'IconNotes',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'noteId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '065a1ede-f773-48ca-84bf-70f61d838396',
|
||||
relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
|
||||
uniqueIdentifier: '20202020-1f25-43fe-8b00-af212fdde824',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '065a1ede-f773-48ca-84bf-70f61d838396',
|
||||
standardId: '20202020-4d1d-41ac-b13b-621631298d67',
|
||||
objectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the note',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'a61baf0f-2d43-4fda-9baf-efb000c17ecd',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-4d1d-41ac-b13b-621631298d67',
|
||||
}),
|
||||
}),
|
||||
view: getFlatFieldMetadataMock({
|
||||
id: 'accd216c-790e-4bd2-83bb-0700e06d0e5c',
|
||||
standardId: '20202020-5a93-4fa9-acce-e73481a0bbdf',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'view',
|
||||
label: 'View',
|
||||
defaultValue: null,
|
||||
description: 'Favorite view',
|
||||
icon: 'IconLayoutCollage',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'viewId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '90a103ec-7dce-4bd4-aed4-e2c9d46ecf32',
|
||||
relationTargetObjectMetadataId: '8377fc0d-ec1c-4fb5-b6ae-9381d9b22a95',
|
||||
uniqueIdentifier: '20202020-5a93-4fa9-acce-e73481a0bbdf',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '90a103ec-7dce-4bd4-aed4-e2c9d46ecf32',
|
||||
standardId: '20202020-c818-4a86-8284-9ec0ef0a59a5',
|
||||
objectMetadataId: '8377fc0d-ec1c-4fb5-b6ae-9381d9b22a95',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites linked to the view',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'accd216c-790e-4bd2-83bb-0700e06d0e5c',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-c818-4a86-8284-9ec0ef0a59a5',
|
||||
}),
|
||||
}),
|
||||
rocket: getFlatFieldMetadataMock({
|
||||
id: '9448627d-725d-499e-a071-90fd5cfcf0ea',
|
||||
standardId: '20202020-78f7-4d7d-86e9-7562ced0b381',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'rocket',
|
||||
label: 'Rocket',
|
||||
defaultValue: null,
|
||||
description: 'Favorites Rocket',
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'rocketId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: '14010360-f3c2-442e-b05f-43c30158f246',
|
||||
relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
|
||||
uniqueIdentifier: '20202020-78f7-4d7d-86e9-7562ced0b381',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '14010360-f3c2-442e-b05f-43c30158f246',
|
||||
standardId: '20202020-a4a7-4686-b296-1c6c3482ee21',
|
||||
objectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites tied to the Rocket',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: '9448627d-725d-499e-a071-90fd5cfcf0ea',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
|
||||
}),
|
||||
}),
|
||||
pet: getFlatFieldMetadataMock({
|
||||
id: 'd34b4048-bf0c-4c61-8ffe-59f1838a2cc4',
|
||||
standardId: '20202020-1bd7-4d10-80dc-968b9f5d1a8a',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'pet',
|
||||
label: 'Pet',
|
||||
defaultValue: null,
|
||||
description: 'Favorites Pet',
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'petId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: '80bc4e7a-6bd1-4f2b-98b1-6333c631cc1a',
|
||||
relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
|
||||
uniqueIdentifier: '20202020-1bd7-4d10-80dc-968b9f5d1a8a',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '80bc4e7a-6bd1-4f2b-98b1-6333c631cc1a',
|
||||
standardId: '20202020-a4a7-4686-b296-1c6c3482ee21',
|
||||
objectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites tied to the Pet',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: 'd34b4048-bf0c-4c61-8ffe-59f1838a2cc4',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
|
||||
}),
|
||||
}),
|
||||
surveyResult: getFlatFieldMetadataMock({
|
||||
id: '9cdfb5a1-bb9c-4a59-811d-f5a1034a8f8b',
|
||||
standardId: '20202020-d049-4912-80ee-43b09fe3b0ac',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'surveyResult',
|
||||
label: 'Survey result',
|
||||
defaultValue: null,
|
||||
description: 'Favorites Survey result',
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'surveyResultId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: '8e11aced-3a20-4551-baa1-b38b98a74e1c',
|
||||
relationTargetObjectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
|
||||
uniqueIdentifier: '20202020-d049-4912-80ee-43b09fe3b0ac',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: '8e11aced-3a20-4551-baa1-b38b98a74e1c',
|
||||
standardId: '20202020-a4a7-4686-b296-1c6c3482ee21',
|
||||
objectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites tied to the Survey result',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: '9cdfb5a1-bb9c-4a59-811d-f5a1034a8f8b',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
|
||||
}),
|
||||
}),
|
||||
} as const satisfies Record<string, FlatFieldMetadata>;
|
||||
+213
@@ -0,0 +1,213 @@
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
|
||||
import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface';
|
||||
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
|
||||
|
||||
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
|
||||
|
||||
export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
|
||||
position: getFlatFieldMetadataMock({
|
||||
id: '5894ab56-99b7-49e8-98be-dd6524250df5',
|
||||
standardId: '20202020-5278-4bde-8909-2cec74d43744',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.NUMBER,
|
||||
name: 'position',
|
||||
label: 'Position',
|
||||
defaultValue: 0,
|
||||
description: 'Favorite folder position',
|
||||
icon: 'IconList',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: null,
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-5278-4bde-8909-2cec74d43744',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
name: getFlatFieldMetadataMock({
|
||||
id: '1502abe0-b2f8-43a7-ae55-91c826b34ffe',
|
||||
standardId: '20202020-82a3-4537-8ff0-dbce7eec35d6',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.TEXT,
|
||||
name: 'name',
|
||||
label: 'Name',
|
||||
defaultValue: "''",
|
||||
description: 'Name of the favorite folder',
|
||||
icon: 'IconText',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: null,
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-82a3-4537-8ff0-dbce7eec35d6',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
id: getFlatFieldMetadataMock({
|
||||
id: '85ab1864-0a92-4682-8583-82e8b696410b',
|
||||
standardId: '20202020-eda0-4cee-9577-3eb357e3c22b',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.UUID,
|
||||
name: 'id',
|
||||
label: 'Id',
|
||||
defaultValue: 'uuid',
|
||||
description: 'Id',
|
||||
icon: 'Icon123',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: null,
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
createdAt: getFlatFieldMetadataMock({
|
||||
id: 'a92b4b66-c2de-483e-8973-6f12bf36ac1a',
|
||||
standardId: '20202020-66ac-4502-9975-e4d959c50311',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
defaultValue: 'now',
|
||||
description: 'Creation date',
|
||||
icon: 'IconCalendar',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { displayFormat: DateDisplayFormat.RELATIVE },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
updatedAt: getFlatFieldMetadataMock({
|
||||
id: '3907fc24-3bf0-4f0b-88be-f9635e473145',
|
||||
standardId: '20202020-d767-4622-bdcf-d8a084834d86',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Last update',
|
||||
defaultValue: 'now',
|
||||
description: 'Last time the record was changed',
|
||||
icon: 'IconCalendarClock',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { displayFormat: DateDisplayFormat.RELATIVE },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: false,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: false,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
deletedAt: getFlatFieldMetadataMock({
|
||||
id: '52dcb335-5ce1-4165-a30b-4a61e84af21f',
|
||||
standardId: '20202020-b9a7-48d8-8387-b9a3090a50ec',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'deletedAt',
|
||||
label: 'Deleted at',
|
||||
defaultValue: null,
|
||||
description: 'Date when the record was deleted',
|
||||
icon: 'IconCalendarMinus',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { displayFormat: DateDisplayFormat.RELATIVE },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: false,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: null,
|
||||
relationTargetObjectMetadataId: null,
|
||||
uniqueIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
|
||||
flatRelationTargetFieldMetadata: null,
|
||||
}),
|
||||
favorites: getFlatFieldMetadataMock({
|
||||
id: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
|
||||
standardId: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
|
||||
objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favorites',
|
||||
label: 'Favorites',
|
||||
defaultValue: null,
|
||||
description: 'Favorites in this folder',
|
||||
icon: 'IconHeart',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: { relationType: RelationType.ONE_TO_MANY },
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
|
||||
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
uniqueIdentifier: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
|
||||
flatRelationTargetFieldMetadata: getFlatFieldMetadataMock({
|
||||
id: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
|
||||
standardId: '20202020-f658-4d12-8b4d-248356aa4bd9',
|
||||
objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
|
||||
type: FieldMetadataType.RELATION,
|
||||
name: 'favoriteFolder',
|
||||
label: 'Favorite Folder',
|
||||
defaultValue: null,
|
||||
description: 'The folder this favorite belongs to',
|
||||
icon: 'IconFolder',
|
||||
standardOverrides: null,
|
||||
options: null,
|
||||
settings: {
|
||||
onDelete: RelationOnDeleteAction.SET_NULL,
|
||||
relationType: RelationType.MANY_TO_ONE,
|
||||
joinColumnName: 'favoriteFolderId',
|
||||
},
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
isSystem: true,
|
||||
isNullable: true,
|
||||
isUnique: false,
|
||||
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
|
||||
isLabelSyncedWithName: true,
|
||||
relationTargetFieldMetadataId: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
|
||||
relationTargetObjectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
|
||||
uniqueIdentifier: '20202020-f658-4d12-8b4d-248356aa4bd9',
|
||||
}),
|
||||
}),
|
||||
} as const satisfies Record<string, FlatFieldMetadata>;
|
||||
+1
-1
@@ -13,7 +13,7 @@ type FlatFieldMetadataOverrides<
|
||||
export const getFlatFieldMetadataMock = <T extends FieldMetadataType>(
|
||||
overrides: FlatFieldMetadataOverrides<T>,
|
||||
): FlatFieldMetadata => {
|
||||
const createdAt = new Date();
|
||||
const createdAt = '2024-01-01T00:00:00.000Z' as unknown as Date;
|
||||
|
||||
return {
|
||||
createdAt,
|
||||
|
||||
+13
@@ -266,6 +266,19 @@ export class FlatFieldMetadataValidatorService {
|
||||
),
|
||||
);
|
||||
} else {
|
||||
if (
|
||||
isDefined(
|
||||
parentFlatObjectMetadata.fieldsById[flatFieldMetadataToValidate.id],
|
||||
)
|
||||
) {
|
||||
errors.push(
|
||||
new ObjectMetadataException(
|
||||
'Field with same id already exists in object',
|
||||
ObjectMetadataExceptionCode.OBJECT_MUTATION_NOT_ALLOWED,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (parentFlatObjectMetadata.isRemote === true) {
|
||||
errors.push(
|
||||
new ObjectMetadataException(
|
||||
|
||||
+7
-7
@@ -8,22 +8,22 @@ import {
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
|
||||
type GetRelationFlatFieldMetadatasUtilArgs = {
|
||||
existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
|
||||
export type GetRelationFlatFieldMetadatasUtilArgs = {
|
||||
flatObjectMetadataMaps: FlatObjectMetadataMaps;
|
||||
flatFieldMetadata: FlatFieldMetadata<
|
||||
FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION
|
||||
>;
|
||||
};
|
||||
// TODO prastoin handle morph relation
|
||||
export const getRelationFlatFieldMetadatasOrThrow = ({
|
||||
existingFlatObjectMetadataMaps,
|
||||
export const findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow = ({
|
||||
flatObjectMetadataMaps,
|
||||
flatFieldMetadata,
|
||||
}: GetRelationFlatFieldMetadatasUtilArgs): FlatFieldMetadata[] => {
|
||||
}: GetRelationFlatFieldMetadatasUtilArgs): FlatFieldMetadata => {
|
||||
const { relationTargetFieldMetadataId, relationTargetObjectMetadataId } =
|
||||
flatFieldMetadata;
|
||||
|
||||
const relatedFlatObjectMetadata =
|
||||
existingFlatObjectMetadataMaps.byId[relationTargetObjectMetadataId];
|
||||
flatObjectMetadataMaps.byId[relationTargetObjectMetadataId];
|
||||
|
||||
if (!isDefined(relatedFlatObjectMetadata)) {
|
||||
throw new FieldMetadataException(
|
||||
@@ -41,5 +41,5 @@ export const getRelationFlatFieldMetadatasOrThrow = ({
|
||||
);
|
||||
}
|
||||
|
||||
return [flatFieldMetadata, relatedFlatFieldMetadata];
|
||||
return relatedFlatFieldMetadata;
|
||||
};
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import {
|
||||
findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow,
|
||||
type GetRelationFlatFieldMetadatasUtilArgs,
|
||||
} from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
|
||||
|
||||
export const findRelationFlatFieldMetadataTargetFlatFieldMetadata = (
|
||||
args: GetRelationFlatFieldMetadatasUtilArgs,
|
||||
): FlatFieldMetadata | undefined => {
|
||||
try {
|
||||
return findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow(args);
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
+8
-5
@@ -10,7 +10,7 @@ import {
|
||||
FieldMetadataExceptionCode,
|
||||
} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { getRelationFlatFieldMetadatasOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/get-relation-flat-field-metadatas-or-throw.util';
|
||||
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
|
||||
import { isFlatFieldMetadataEntityOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
import { findFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldId } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-with-field-id-only.util';
|
||||
@@ -52,10 +52,13 @@ export const fromDeleteFieldInputToFlatFieldMetadatasToDelete = ({
|
||||
FieldMetadataType.MORPH_RELATION,
|
||||
)
|
||||
) {
|
||||
return getRelationFlatFieldMetadatasOrThrow({
|
||||
existingFlatObjectMetadataMaps,
|
||||
flatFieldMetadata: flatFieldMetadataToDelete,
|
||||
});
|
||||
const relationTargetFlatFieldMetadata =
|
||||
findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
|
||||
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
|
||||
flatFieldMetadata: flatFieldMetadataToDelete,
|
||||
});
|
||||
|
||||
return [flatFieldMetadataToDelete, relationTargetFlatFieldMetadata];
|
||||
}
|
||||
|
||||
return [flatFieldMetadataToDelete];
|
||||
|
||||
Reference in New Issue
Block a user