From b9154f315e767566cbd95bbfcd6c36d4e9520cba Mon Sep 17 00:00:00 2001 From: Marie <51697796+ijreilly@users.noreply.github.com> Date: Mon, 13 May 2024 17:43:51 +0200 Subject: [PATCH] Enable deletion of relation fields (#5338) In this PR 1. Enable deletion of relation fields in the product and via the api (migration part was missing in the api) 3. Change wording, only use "deactivate" and "delete" everywhere (and not a mix of the two + "disable", "erase") --- .../src/generated-metadata/gql.ts | 9 +- .../src/generated-metadata/graphql.ts | 29 +++-- .../twenty-front/src/generated/graphql.tsx | 35 +++--- .../object-metadata/graphql/mutations.ts | 8 ++ .../object-metadata/graphql/queries.ts | 1 + .../useDeleteOneRelationMetadataItem.ts | 15 +++ .../hooks/__mocks__/useFieldMetadataItem.ts | 34 ++++-- .../useDeleteOneRelationMetadataItem.test.tsx | 49 +++++++++ .../__tests__/useFieldMetadataItem.test.tsx | 80 ++++++++++++-- .../hooks/useDeleteOneRelationMetadataItem.ts | 39 +++++++ .../hooks/useFieldMetadataItem.ts | 18 +++- .../types/FieldMetadataItem.ts | 2 + .../fieldMetadataItemSchema.ts | 1 + ...tingsObjectFieldDisabledActionDropdown.tsx | 19 ++-- .../SettingsObjectInactiveMenuDropDown.tsx | 12 +-- ...ingsObjectInactiveMenuDropDown.stories.tsx | 16 +-- .../data-model/SettingsObjectDetail.tsx | 33 +++--- .../data-model/SettingsObjectEdit.tsx | 4 +- .../data-model/SettingsObjectFieldEdit.tsx | 15 +-- .../SettingsObjectNewFieldStep1.tsx | 20 ++-- .../settings/data-model/SettingsObjects.tsx | 2 +- .../SettingsObjectNewFieldStep1.stories.tsx | 2 +- .../SettingsDevelopersApiKeyDetail.tsx | 2 +- .../SettingsDevelopersWebhookDetail.tsx | 2 +- .../standard-metadata-query-result.ts | 100 ++++++++++++++++++ .../src/testing/mock-data/metadata.ts | 1 + .../dtos/relation-definition.dto.ts | 6 ++ .../field-metadata/field-metadata.service.ts | 2 + .../relation-metadata.module.ts | 3 +- .../relation-metadata.service.ts | 77 +++++++++++++- 30 files changed, 519 insertions(+), 117 deletions(-) create mode 100644 packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useDeleteOneRelationMetadataItem.ts create mode 100644 packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useDeleteOneRelationMetadataItem.test.tsx create mode 100644 packages/twenty-front/src/modules/object-metadata/hooks/useDeleteOneRelationMetadataItem.ts diff --git a/packages/twenty-front/src/generated-metadata/gql.ts b/packages/twenty-front/src/generated-metadata/gql.ts index c632dfedc6..015c5054fd 100644 --- a/packages/twenty-front/src/generated-metadata/gql.ts +++ b/packages/twenty-front/src/generated-metadata/gql.ts @@ -30,7 +30,8 @@ const documents = { "\n mutation UpdateOneObjectMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateObjectPayload!\n ) {\n updateOneObject(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n }\n }\n": types.UpdateOneObjectMetadataItemDocument, "\n mutation DeleteOneObjectMetadataItem($idToDelete: UUID!) {\n deleteOneObject(input: { id: $idToDelete }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n }\n }\n": types.DeleteOneObjectMetadataItemDocument, "\n mutation DeleteOneFieldMetadataItem($idToDelete: UUID!) {\n deleteOneField(input: { id: $idToDelete }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n }\n }\n": types.DeleteOneFieldMetadataItemDocument, - "\n query ObjectMetadataItems(\n $objectFilter: objectFilter\n $fieldFilter: fieldFilter\n ) {\n objects(paging: { first: 1000 }, filter: $objectFilter) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n fields(paging: { first: 1000 }, filter: $fieldFilter) {\n edges {\n node {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n createdAt\n updatedAt\n fromRelationMetadata {\n id\n relationType\n toObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n toFieldMetadataId\n }\n toRelationMetadata {\n id\n relationType\n fromObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n fromFieldMetadataId\n }\n defaultValue\n options\n relationDefinition {\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n": types.ObjectMetadataItemsDocument, + "\n mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) {\n deleteOneRelation(input: { id: $idToDelete }) {\n id\n }\n }\n": types.DeleteOneRelationMetadataItemDocument, + "\n query ObjectMetadataItems(\n $objectFilter: objectFilter\n $fieldFilter: fieldFilter\n ) {\n objects(paging: { first: 1000 }, filter: $objectFilter) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n fields(paging: { first: 1000 }, filter: $fieldFilter) {\n edges {\n node {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n createdAt\n updatedAt\n fromRelationMetadata {\n id\n relationType\n toObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n toFieldMetadataId\n }\n toRelationMetadata {\n id\n relationType\n fromObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n fromFieldMetadataId\n }\n defaultValue\n options\n relationDefinition {\n relationId\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n": types.ObjectMetadataItemsDocument, }; /** @@ -118,7 +119,11 @@ export function graphql(source: "\n mutation DeleteOneFieldMetadataItem($idToDe /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "\n query ObjectMetadataItems(\n $objectFilter: objectFilter\n $fieldFilter: fieldFilter\n ) {\n objects(paging: { first: 1000 }, filter: $objectFilter) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n fields(paging: { first: 1000 }, filter: $fieldFilter) {\n edges {\n node {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n createdAt\n updatedAt\n fromRelationMetadata {\n id\n relationType\n toObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n toFieldMetadataId\n }\n toRelationMetadata {\n id\n relationType\n fromObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n fromFieldMetadataId\n }\n defaultValue\n options\n relationDefinition {\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"): (typeof documents)["\n query ObjectMetadataItems(\n $objectFilter: objectFilter\n $fieldFilter: fieldFilter\n ) {\n objects(paging: { first: 1000 }, filter: $objectFilter) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n fields(paging: { first: 1000 }, filter: $fieldFilter) {\n edges {\n node {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n createdAt\n updatedAt\n fromRelationMetadata {\n id\n relationType\n toObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n toFieldMetadataId\n }\n toRelationMetadata {\n id\n relationType\n fromObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n fromFieldMetadataId\n }\n defaultValue\n options\n relationDefinition {\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"]; +export function graphql(source: "\n mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) {\n deleteOneRelation(input: { id: $idToDelete }) {\n id\n }\n }\n"): (typeof documents)["\n mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) {\n deleteOneRelation(input: { id: $idToDelete }) {\n id\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n query ObjectMetadataItems(\n $objectFilter: objectFilter\n $fieldFilter: fieldFilter\n ) {\n objects(paging: { first: 1000 }, filter: $objectFilter) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n fields(paging: { first: 1000 }, filter: $fieldFilter) {\n edges {\n node {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n createdAt\n updatedAt\n fromRelationMetadata {\n id\n relationType\n toObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n toFieldMetadataId\n }\n toRelationMetadata {\n id\n relationType\n fromObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n fromFieldMetadataId\n }\n defaultValue\n options\n relationDefinition {\n relationId\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"): (typeof documents)["\n query ObjectMetadataItems(\n $objectFilter: objectFilter\n $fieldFilter: fieldFilter\n ) {\n objects(paging: { first: 1000 }, filter: $objectFilter) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n fields(paging: { first: 1000 }, filter: $fieldFilter) {\n edges {\n node {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n createdAt\n updatedAt\n fromRelationMetadata {\n id\n relationType\n toObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n toFieldMetadataId\n }\n toRelationMetadata {\n id\n relationType\n fromObjectMetadata {\n id\n dataSourceId\n nameSingular\n namePlural\n isSystem\n isRemote\n }\n fromFieldMetadataId\n }\n defaultValue\n options\n relationDefinition {\n relationId\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"]; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts index c246207ff3..c1fe719fd4 100644 --- a/packages/twenty-front/src/generated-metadata/graphql.ts +++ b/packages/twenty-front/src/generated-metadata/graphql.ts @@ -246,7 +246,7 @@ export type DeleteOneObjectInput = { }; export type DeleteOneRelationInput = { - /** The id of the record to delete. */ + /** The id of the relation to delete. */ id: Scalars['UUID']['input']; }; @@ -364,7 +364,7 @@ export type Mutation = { deleteCurrentWorkspace: Workspace; deleteOneField: Field; deleteOneObject: Object; - deleteOneRelation: RelationDeleteResponse; + deleteOneRelation: Relation; deleteOneRemoteServer: RemoteServer; deleteUser: User; emailPasswordResetLink: EmailPasswordResetLink; @@ -756,6 +756,7 @@ export type RelationConnection = { export type RelationDefinition = { __typename?: 'RelationDefinition'; direction: RelationDefinitionType; + relationId: Scalars['UUID']['output']; sourceFieldMetadata: Field; sourceObjectMetadata: Object; targetFieldMetadata: Field; @@ -770,18 +771,6 @@ export enum RelationDefinitionType { OneToOne = 'ONE_TO_ONE' } -export type RelationDeleteResponse = { - __typename?: 'RelationDeleteResponse'; - createdAt?: Maybe; - fromFieldMetadataId?: Maybe; - fromObjectMetadataId?: Maybe; - id?: Maybe; - relationType?: Maybe; - toFieldMetadataId?: Maybe; - toObjectMetadataId?: Maybe; - updatedAt?: Maybe; -}; - /** Type of the relation */ export enum RelationMetadataType { ManyToMany = 'MANY_TO_MANY', @@ -1365,13 +1354,20 @@ export type DeleteOneFieldMetadataItemMutationVariables = Exact<{ export type DeleteOneFieldMetadataItemMutation = { __typename?: 'Mutation', deleteOneField: { __typename?: 'field', id: any, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isCustom?: boolean | null, isActive?: boolean | null, isNullable?: boolean | null, createdAt: any, updatedAt: any } }; +export type DeleteOneRelationMetadataItemMutationVariables = Exact<{ + idToDelete: Scalars['UUID']['input']; +}>; + + +export type DeleteOneRelationMetadataItemMutation = { __typename?: 'Mutation', deleteOneRelation: { __typename?: 'relation', id: any } }; + export type ObjectMetadataItemsQueryVariables = Exact<{ objectFilter?: InputMaybe; fieldFilter?: InputMaybe; }>; -export type ObjectMetadataItemsQuery = { __typename?: 'Query', objects: { __typename?: 'ObjectConnection', edges: Array<{ __typename?: 'objectEdge', node: { __typename?: 'object', id: any, dataSourceId: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, description?: string | null, icon?: string | null, isCustom: boolean, isRemote: boolean, isActive: boolean, isSystem: boolean, createdAt: any, updatedAt: any, labelIdentifierFieldMetadataId?: string | null, imageIdentifierFieldMetadataId?: string | null, fields: { __typename?: 'ObjectFieldsConnection', edges: Array<{ __typename?: 'fieldEdge', node: { __typename?: 'field', id: any, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isCustom?: boolean | null, isActive?: boolean | null, isSystem?: boolean | null, isNullable?: boolean | null, createdAt: any, updatedAt: any, defaultValue?: any | null, options?: any | null, fromRelationMetadata?: { __typename?: 'relation', id: any, relationType: RelationMetadataType, toFieldMetadataId: string, toObjectMetadata: { __typename?: 'object', id: any, dataSourceId: string, nameSingular: string, namePlural: string, isSystem: boolean, isRemote: boolean } } | null, toRelationMetadata?: { __typename?: 'relation', id: any, relationType: RelationMetadataType, fromFieldMetadataId: string, fromObjectMetadata: { __typename?: 'object', id: any, dataSourceId: string, nameSingular: string, namePlural: string, isSystem: boolean, isRemote: boolean } } | null, relationDefinition?: { __typename?: 'RelationDefinition', direction: RelationDefinitionType, sourceObjectMetadata: { __typename?: 'object', id: any, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'field', id: any, name: string }, targetObjectMetadata: { __typename?: 'object', id: any, nameSingular: string, namePlural: string }, targetFieldMetadata: { __typename?: 'field', id: any, name: string } } | null } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage?: boolean | null, hasPreviousPage?: boolean | null, startCursor?: any | null, endCursor?: any | null } } } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage?: boolean | null, hasPreviousPage?: boolean | null, startCursor?: any | null, endCursor?: any | null } } }; +export type ObjectMetadataItemsQuery = { __typename?: 'Query', objects: { __typename?: 'ObjectConnection', edges: Array<{ __typename?: 'objectEdge', node: { __typename?: 'object', id: any, dataSourceId: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, description?: string | null, icon?: string | null, isCustom: boolean, isRemote: boolean, isActive: boolean, isSystem: boolean, createdAt: any, updatedAt: any, labelIdentifierFieldMetadataId?: string | null, imageIdentifierFieldMetadataId?: string | null, fields: { __typename?: 'ObjectFieldsConnection', edges: Array<{ __typename?: 'fieldEdge', node: { __typename?: 'field', id: any, type: FieldMetadataType, name: string, label: string, description?: string | null, icon?: string | null, isCustom?: boolean | null, isActive?: boolean | null, isSystem?: boolean | null, isNullable?: boolean | null, createdAt: any, updatedAt: any, defaultValue?: any | null, options?: any | null, fromRelationMetadata?: { __typename?: 'relation', id: any, relationType: RelationMetadataType, toFieldMetadataId: string, toObjectMetadata: { __typename?: 'object', id: any, dataSourceId: string, nameSingular: string, namePlural: string, isSystem: boolean, isRemote: boolean } } | null, toRelationMetadata?: { __typename?: 'relation', id: any, relationType: RelationMetadataType, fromFieldMetadataId: string, fromObjectMetadata: { __typename?: 'object', id: any, dataSourceId: string, nameSingular: string, namePlural: string, isSystem: boolean, isRemote: boolean } } | null, relationDefinition?: { __typename?: 'RelationDefinition', relationId: any, direction: RelationDefinitionType, sourceObjectMetadata: { __typename?: 'object', id: any, nameSingular: string, namePlural: string }, sourceFieldMetadata: { __typename?: 'field', id: any, name: string }, targetObjectMetadata: { __typename?: 'object', id: any, nameSingular: string, namePlural: string }, targetFieldMetadata: { __typename?: 'field', id: any, name: string } } | null } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage?: boolean | null, hasPreviousPage?: boolean | null, startCursor?: any | null, endCursor?: any | null } } } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage?: boolean | null, hasPreviousPage?: boolean | null, startCursor?: any | null, endCursor?: any | null } } }; export const RemoteServerFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"RemoteServerFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"RemoteServer"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"foreignDataWrapperId"}},{"kind":"Field","name":{"kind":"Name","value":"foreignDataWrapperOptions"}},{"kind":"Field","name":{"kind":"Name","value":"foreignDataWrapperType"}},{"kind":"Field","name":{"kind":"Name","value":"userMappingOptions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"}}]}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"schema"}}]}}]} as unknown as DocumentNode; export const RemoteTableFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"RemoteTableFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"RemoteTable"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"schema"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]} as unknown as DocumentNode; @@ -1390,4 +1386,5 @@ export const UpdateOneFieldMetadataItemDocument = {"kind":"Document","definition export const UpdateOneObjectMetadataItemDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateOneObjectMetadataItem"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"idToUpdate"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"updatePayload"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateObjectPayload"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateOneObject"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"idToUpdate"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"update"},"value":{"kind":"Variable","name":{"kind":"Name","value":"updatePayload"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}}]}}]}}]} as unknown as DocumentNode; export const DeleteOneObjectMetadataItemDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteOneObjectMetadataItem"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"idToDelete"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteOneObject"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"idToDelete"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}}]}}]}}]} as unknown as DocumentNode; export const DeleteOneFieldMetadataItemDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteOneFieldMetadataItem"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"idToDelete"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteOneField"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"idToDelete"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode; -export const ObjectMetadataItemsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ObjectMetadataItems"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"objectFilter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"objectFilter"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"fieldFilter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"fieldFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"objects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"paging"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"1000"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"objectFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"fields"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"paging"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"1000"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"fieldFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"fromRelationMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"relationType"}},{"kind":"Field","name":{"kind":"Name","value":"toObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}}]}},{"kind":"Field","name":{"kind":"Name","value":"toFieldMetadataId"}}]}},{"kind":"Field","name":{"kind":"Name","value":"toRelationMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"relationType"}},{"kind":"Field","name":{"kind":"Name","value":"fromObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}}]}},{"kind":"Field","name":{"kind":"Name","value":"fromFieldMetadataId"}}]}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"relationDefinition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"direction"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"hasPreviousPage"}},{"kind":"Field","name":{"kind":"Name","value":"startCursor"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"hasPreviousPage"}},{"kind":"Field","name":{"kind":"Name","value":"startCursor"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const DeleteOneRelationMetadataItemDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteOneRelationMetadataItem"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"idToDelete"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteOneRelation"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"idToDelete"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; +export const ObjectMetadataItemsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ObjectMetadataItems"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"objectFilter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"objectFilter"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"fieldFilter"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"fieldFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"objects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"paging"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"1000"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"objectFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"labelIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"imageIdentifierFieldMetadataId"}},{"kind":"Field","name":{"kind":"Name","value":"fields"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"paging"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"1000"}}]}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"fieldFilter"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"fromRelationMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"relationType"}},{"kind":"Field","name":{"kind":"Name","value":"toObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}}]}},{"kind":"Field","name":{"kind":"Name","value":"toFieldMetadataId"}}]}},{"kind":"Field","name":{"kind":"Name","value":"toRelationMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"relationType"}},{"kind":"Field","name":{"kind":"Name","value":"fromObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"isSystem"}},{"kind":"Field","name":{"kind":"Name","value":"isRemote"}}]}},{"kind":"Field","name":{"kind":"Name","value":"fromFieldMetadataId"}}]}},{"kind":"Field","name":{"kind":"Name","value":"defaultValue"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"relationDefinition"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"relationId"}},{"kind":"Field","name":{"kind":"Name","value":"direction"}},{"kind":"Field","name":{"kind":"Name","value":"sourceObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sourceFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetObjectMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targetFieldMetadata"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"hasPreviousPage"}},{"kind":"Field","name":{"kind":"Name","value":"startCursor"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"hasPreviousPage"}},{"kind":"Field","name":{"kind":"Name","value":"startCursor"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/packages/twenty-front/src/generated/graphql.tsx b/packages/twenty-front/src/generated/graphql.tsx index 69024a9dd6..00405467fc 100644 --- a/packages/twenty-front/src/generated/graphql.tsx +++ b/packages/twenty-front/src/generated/graphql.tsx @@ -366,6 +366,11 @@ export type MutationTrackArgs = { }; +export type MutationUpdateOneObjectArgs = { + input: UpdateOneObjectInput; +}; + + export type MutationUpdatePasswordViaResetTokenArgs = { newPassword: Scalars['String']; passwordResetToken: Scalars['String']; @@ -548,18 +553,6 @@ export enum RelationDefinitionType { OneToOne = 'ONE_TO_ONE' } -export type RelationDeleteResponse = { - __typename?: 'RelationDeleteResponse'; - createdAt?: Maybe; - fromFieldMetadataId?: Maybe; - fromObjectMetadataId?: Maybe; - id?: Maybe; - relationType?: Maybe; - toFieldMetadataId?: Maybe; - toObjectMetadataId?: Maybe; - updatedAt?: Maybe; -}; - /** Type of the relation */ export enum RelationMetadataType { ManyToMany = 'MANY_TO_MANY', @@ -728,6 +721,24 @@ export type UpdateBillingEntity = { success: Scalars['Boolean']; }; +export type UpdateObjectPayload = { + description?: InputMaybe; + icon?: InputMaybe; + imageIdentifierFieldMetadataId?: InputMaybe; + isActive?: InputMaybe; + labelIdentifierFieldMetadataId?: InputMaybe; + labelPlural?: InputMaybe; + labelSingular?: InputMaybe; + namePlural?: InputMaybe; + nameSingular?: InputMaybe; +}; + +export type UpdateOneObjectInput = { + /** The id of the object to update */ + id: Scalars['UUID']; + update: UpdateObjectPayload; +}; + export type UpdateWorkspaceInput = { allowImpersonation?: InputMaybe; displayName?: InputMaybe; diff --git a/packages/twenty-front/src/modules/object-metadata/graphql/mutations.ts b/packages/twenty-front/src/modules/object-metadata/graphql/mutations.ts index e73bcabd4c..ab37d52491 100644 --- a/packages/twenty-front/src/modules/object-metadata/graphql/mutations.ts +++ b/packages/twenty-front/src/modules/object-metadata/graphql/mutations.ts @@ -139,3 +139,11 @@ export const DELETE_ONE_FIELD_METADATA_ITEM = gql` } } `; + +export const DELETE_ONE_RELATION_METADATA_ITEM = gql` + mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) { + deleteOneRelation(input: { id: $idToDelete }) { + id + } + } +`; diff --git a/packages/twenty-front/src/modules/object-metadata/graphql/queries.ts b/packages/twenty-front/src/modules/object-metadata/graphql/queries.ts index fc2a1754f6..729e1f96bf 100644 --- a/packages/twenty-front/src/modules/object-metadata/graphql/queries.ts +++ b/packages/twenty-front/src/modules/object-metadata/graphql/queries.ts @@ -68,6 +68,7 @@ export const FIND_MANY_OBJECT_METADATA_ITEMS = gql` defaultValue options relationDefinition { + relationId direction sourceObjectMetadata { id diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useDeleteOneRelationMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useDeleteOneRelationMetadataItem.ts new file mode 100644 index 0000000000..eb439e70f9 --- /dev/null +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useDeleteOneRelationMetadataItem.ts @@ -0,0 +1,15 @@ +import { gql } from '@apollo/client'; + +export const query = gql` + mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) { + deleteOneRelation(input: { id: $idToDelete }) { + id + } + } +`; + +export const variables = { idToDelete: 'idToDelete' }; + +export const responseData = { + id: 'idToDelete' +}; diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useFieldMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useFieldMetadataItem.ts index 669204037b..0a73b0d2a4 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useFieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__mocks__/useFieldMetadataItem.ts @@ -1,4 +1,9 @@ import { gql } from '@apollo/client'; +import { FieldMetadataType } from '~/generated/graphql'; + +export const FIELD_METADATA_ID = '2c43466a-fe9e-4005-8d08-c5836067aa6c'; +export const FIELD_RELATION_METADATA_ID = '4da0302d-358a-45cd-9973-9f92723ed3c1'; +export const RELATION_METADATA_ID = 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6'; const baseFields = ` id @@ -15,13 +20,20 @@ const baseFields = ` `; export const queries = { - eraseMetadataField: gql` + deleteMetadataField: gql` mutation DeleteOneFieldMetadataItem($idToDelete: UUID!) { deleteOneField(input: { id: $idToDelete }) { ${baseFields} } } `, + deleteMetadataFieldRelation: gql` + mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) { + deleteOneRelation(input: { id: $idToDelete }) { + id + } + } +`, activateMetadataField: gql` mutation UpdateOneFieldMetadataItem( $idToUpdate: UUID! @@ -43,13 +55,13 @@ export const queries = { `, }; -const fieldId = '2c43466a-fe9e-4005-8d08-c5836067aa6c'; export const objectMetadataId = '25611fce-6637-4089-b0ca-91afeec95784'; export const variables = { - eraseMetadataField: { idToDelete: fieldId }, + deleteMetadataField: { idToDelete: FIELD_METADATA_ID }, + deleteMetadataFieldRelation: { idToDelete: RELATION_METADATA_ID }, activateMetadataField: { - idToUpdate: fieldId, + idToUpdate: FIELD_METADATA_ID, updatePayload: { isActive: true, label: undefined }, }, createMetadataField: { @@ -66,14 +78,14 @@ export const variables = { }, }, }, - disableMetadataField: { - idToUpdate: fieldId, + deactivateMetadataField: { + idToUpdate: FIELD_METADATA_ID, updatePayload: { isActive: false, label: undefined }, } }; const defaultResponseData = { - id: '2c43466a-fe9e-4005-8d08-c5836067aa6c', + id: FIELD_METADATA_ID, type: 'type', name: 'name', label: 'label', @@ -86,11 +98,19 @@ const defaultResponseData = { updatedAt: '1996-10-10T08:27:57.117Z', }; +const fieldRelationResponseData = { + ...defaultResponseData, + id: FIELD_RELATION_METADATA_ID, + type: FieldMetadataType.Relation, +}; + export const responseData = { default: defaultResponseData, + fieldRelation: fieldRelationResponseData, createMetadataField: { ...defaultResponseData, defaultValue: '', options: [], }, }; + diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useDeleteOneRelationMetadataItem.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useDeleteOneRelationMetadataItem.test.tsx new file mode 100644 index 0000000000..7c6dcf6135 --- /dev/null +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useDeleteOneRelationMetadataItem.test.tsx @@ -0,0 +1,49 @@ +import { ReactNode } from 'react'; +import { MockedProvider } from '@apollo/client/testing'; +import { act, renderHook } from '@testing-library/react'; +import { RecoilRoot } from 'recoil'; + +import { useDeleteOneRelationMetadataItem } from '@/object-metadata/hooks/useDeleteOneRelationMetadataItem'; + +import { + query, + responseData, + variables, +} from '../__mocks__/useDeleteOneRelationMetadataItem'; + +const mocks = [ + { + request: { + query, + variables, + }, + result: jest.fn(() => ({ + data: { + deleteOneRelation: responseData, + }, + })), + }, +]; + +const Wrapper = ({ children }: { children: ReactNode }) => ( + + + {children} + + +); + +describe('useDeleteOneRelationMetadataItem', () => { + it('should work as expected', async () => { + const { result } = renderHook(() => useDeleteOneRelationMetadataItem(), { + wrapper: Wrapper, + }); + + await act(async () => { + const res = + await result.current.deleteOneRelationMetadataItem('idToDelete'); + + expect(res.data).toEqual({ deleteOneRelation: responseData }); + }); + }); +}); diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFieldMetadataItem.test.tsx b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFieldMetadataItem.test.tsx index 17ca461f94..47b1a6c18c 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFieldMetadataItem.test.tsx +++ b/packages/twenty-front/src/modules/object-metadata/hooks/__tests__/useFieldMetadataItem.test.tsx @@ -5,17 +5,20 @@ import { RecoilRoot } from 'recoil'; import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem'; import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; -import { FieldMetadataType } from '~/generated/graphql'; +import { FieldMetadataType, RelationDefinitionType } from '~/generated/graphql'; import { + FIELD_METADATA_ID, + FIELD_RELATION_METADATA_ID, objectMetadataId, queries, + RELATION_METADATA_ID, responseData, variables, } from '../__mocks__/useFieldMetadataItem'; const fieldMetadataItem: FieldMetadataItem = { - id: '2c43466a-fe9e-4005-8d08-c5836067aa6c', + id: FIELD_METADATA_ID, createdAt: '', label: 'label', name: 'name', @@ -23,11 +26,42 @@ const fieldMetadataItem: FieldMetadataItem = { updatedAt: '', }; +const fieldRelationMetadataItem: FieldMetadataItem = { + id: FIELD_RELATION_METADATA_ID, + createdAt: '', + label: 'label', + name: 'name', + type: FieldMetadataType.Relation, + updatedAt: '', + relationDefinition: { + relationId: RELATION_METADATA_ID, + direction: RelationDefinitionType.OneToMany, + sourceFieldMetadata: { + id: 'e5903d91-9b10-4f3e-b761-35c36e93b7c1', + name: 'sourceField', + }, + targetFieldMetadata: { + id: 'd23d82d4-690b-489f-a8e3-fc5ed01a91f6', + name: 'targetField', + }, + sourceObjectMetadata: { + id: 'bf46be8a-7c47-45a7-b2f1-30f49e14fbd9', + nameSingular: 'sourceObject', + namePlural: 'sourceObjects', + }, + targetObjectMetadata: { + id: '987c0489-2855-4a63-bb81-93692e51b2a9', + nameSingular: 'targetObject', + namePlural: 'targetObjects', + }, + }, +}; + const mocks = [ { request: { - query: queries.eraseMetadataField, - variables: variables.eraseMetadataField, + query: queries.deleteMetadataField, + variables: variables.deleteMetadataField, }, result: jest.fn(() => ({ data: { @@ -35,6 +69,17 @@ const mocks = [ }, })), }, + { + request: { + query: queries.deleteMetadataFieldRelation, + variables: variables.deleteMetadataFieldRelation, + }, + result: jest.fn(() => ({ + data: { + deleteOneRelation: responseData.fieldRelation, + }, + })), + }, { request: { query: queries.activateMetadataField, @@ -60,7 +105,7 @@ const mocks = [ { request: { query: queries.activateMetadataField, - variables: variables.disableMetadataField, + variables: variables.deactivateMetadataField, }, result: jest.fn(() => ({ data: { @@ -111,13 +156,14 @@ describe('useFieldMetadataItem', () => { }); }); - it('should disableMetadataField', async () => { + it('should deactivateMetadataField', async () => { const { result } = renderHook(() => useFieldMetadataItem(), { wrapper: Wrapper, }); await act(async () => { - const res = await result.current.disableMetadataField(fieldMetadataItem); + const res = + await result.current.deactivateMetadataField(fieldMetadataItem); expect(res.data).toEqual({ updateOneField: responseData.default, @@ -125,17 +171,33 @@ describe('useFieldMetadataItem', () => { }); }); - it('should eraseMetadataField', async () => { + it('should deleteOneFieldMetadataItem when calling deleteMetadataField for a non-relation field', async () => { const { result } = renderHook(() => useFieldMetadataItem(), { wrapper: Wrapper, }); await act(async () => { - const res = await result.current.eraseMetadataField(fieldMetadataItem); + const res = await result.current.deleteMetadataField(fieldMetadataItem); expect(res.data).toEqual({ deleteOneField: responseData.default, }); }); }); + + it('should deleteOneFieldMetadataItem when calling deleteMetadataField for a relation field', async () => { + const { result } = renderHook(() => useFieldMetadataItem(), { + wrapper: Wrapper, + }); + + await act(async () => { + const res = await result.current.deleteMetadataField( + fieldRelationMetadataItem, + ); + + expect(res.data).toEqual({ + deleteOneRelation: responseData.fieldRelation, + }); + }); + }); }); diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useDeleteOneRelationMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useDeleteOneRelationMetadataItem.ts new file mode 100644 index 0000000000..db78dd8eba --- /dev/null +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useDeleteOneRelationMetadataItem.ts @@ -0,0 +1,39 @@ +import { ApolloClient, useMutation } from '@apollo/client'; +import { getOperationName } from '@apollo/client/utilities'; + +import { DELETE_ONE_RELATION_METADATA_ITEM } from '@/object-metadata/graphql/mutations'; +import { + DeleteOneRelationMetadataItemMutation, + DeleteOneRelationMetadataItemMutationVariables, +} from '~/generated-metadata/graphql'; + +import { FIND_MANY_OBJECT_METADATA_ITEMS } from '../graphql/queries'; + +import { useApolloMetadataClient } from './useApolloMetadataClient'; + +export const useDeleteOneRelationMetadataItem = () => { + const apolloMetadataClient = useApolloMetadataClient(); + + const [mutate] = useMutation< + DeleteOneRelationMetadataItemMutation, + DeleteOneRelationMetadataItemMutationVariables + >(DELETE_ONE_RELATION_METADATA_ITEM, { + client: apolloMetadataClient ?? ({} as ApolloClient), + }); + + const deleteOneRelationMetadataItem = async ( + idToDelete: DeleteOneRelationMetadataItemMutationVariables['idToDelete'], + ) => { + return await mutate({ + variables: { + idToDelete, + }, + awaitRefetchQueries: true, + refetchQueries: [getOperationName(FIND_MANY_OBJECT_METADATA_ITEMS) ?? ''], + }); + }; + + return { + deleteOneRelationMetadataItem, + }; +}; diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItem.ts index e08e341c66..75f9f5a2e4 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItem.ts @@ -1,4 +1,6 @@ +import { useDeleteOneRelationMetadataItem } from '@/object-metadata/hooks/useDeleteOneRelationMetadataItem'; import { Field } from '~/generated/graphql'; +import { FieldMetadataType } from '~/generated-metadata/graphql'; import { FieldMetadataItem } from '../types/FieldMetadataItem'; import { formatFieldMetadataItemInput } from '../utils/formatFieldMetadataItemInput'; @@ -11,6 +13,7 @@ export const useFieldMetadataItem = () => { const { createOneFieldMetadataItem } = useCreateOneFieldMetadataItem(); const { updateOneFieldMetadataItem } = useUpdateOneFieldMetadataItem(); const { deleteOneFieldMetadataItem } = useDeleteOneFieldMetadataItem(); + const { deleteOneRelationMetadataItem } = useDeleteOneRelationMetadataItem(); const createMetadataField = ( input: Pick< @@ -37,19 +40,24 @@ export const useFieldMetadataItem = () => { updatePayload: { isActive: true }, }); - const disableMetadataField = (metadataField: FieldMetadataItem) => + const deactivateMetadataField = (metadataField: FieldMetadataItem) => updateOneFieldMetadataItem({ fieldMetadataIdToUpdate: metadataField.id, updatePayload: { isActive: false }, }); - const eraseMetadataField = (metadataField: FieldMetadataItem) => - deleteOneFieldMetadataItem(metadataField.id); + const deleteMetadataField = (metadataField: FieldMetadataItem) => { + return metadataField.type === FieldMetadataType.Relation + ? deleteOneRelationMetadataItem( + metadataField.relationDefinition?.relationId, + ) + : deleteOneFieldMetadataItem(metadataField.id); + }; return { activateMetadataField, createMetadataField, - disableMetadataField, - eraseMetadataField, + deactivateMetadataField, + deleteMetadataField, }; }; diff --git a/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts index 5ba74573ee..c0c4649e52 100644 --- a/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts @@ -3,6 +3,7 @@ import { Field, Object as MetadataObject, Relation, + RelationDefinition, RelationDefinitionType, } from '~/generated-metadata/graphql'; @@ -44,6 +45,7 @@ export type FieldMetadataItem = Omit< defaultValue?: any; options?: FieldMetadataItemOption[]; relationDefinition?: { + relationId: RelationDefinition['relationId']; direction: RelationDefinitionType; sourceFieldMetadata: Pick; sourceObjectMetadata: Pick< diff --git a/packages/twenty-front/src/modules/object-metadata/validation-schemas/fieldMetadataItemSchema.ts b/packages/twenty-front/src/modules/object-metadata/validation-schemas/fieldMetadataItemSchema.ts index 924beaac2f..7ca55d70f0 100644 --- a/packages/twenty-front/src/modules/object-metadata/validation-schemas/fieldMetadataItemSchema.ts +++ b/packages/twenty-front/src/modules/object-metadata/validation-schemas/fieldMetadataItemSchema.ts @@ -55,6 +55,7 @@ export const fieldMetadataItemSchema = z.object({ relationDefinition: z .object({ __typename: z.literal('RelationDefinition').optional(), + relationId: z.string().uuid(), direction: z.nativeEnum(RelationDefinitionType), sourceFieldMetadata: z.object({ __typename: z.literal('field').optional(), diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx index 846f27fd5c..67608f6899 100644 --- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx @@ -12,14 +12,14 @@ type SettingsObjectFieldInactiveActionDropdownProps = { isCustomField?: boolean; fieldType?: FieldMetadataType; onActivate: () => void; - onErase: () => void; + onDelete: () => void; scopeKey: string; }; export const SettingsObjectFieldInactiveActionDropdown = ({ onActivate, scopeKey, - onErase, + onDelete, isCustomField, fieldType, }: SettingsObjectFieldInactiveActionDropdownProps) => { @@ -32,15 +32,12 @@ export const SettingsObjectFieldInactiveActionDropdown = ({ closeDropdown(); }; - const handleErase = () => { - onErase(); + const handleDelete = () => { + onDelete(); closeDropdown(); }; - const isErasable = - isCustomField && - fieldType !== FieldMetadataType.Relation && - fieldType !== FieldMetadataType.Address; + const isDeletable = isCustomField && fieldType !== FieldMetadataType.Address; return ( - {isErasable && ( + {isDeletable && ( )} diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/SettingsObjectInactiveMenuDropDown.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/SettingsObjectInactiveMenuDropDown.tsx index 107fafed7a..77e39f8f11 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/SettingsObjectInactiveMenuDropDown.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/SettingsObjectInactiveMenuDropDown.tsx @@ -10,14 +10,14 @@ import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; type SettingsObjectInactiveMenuDropDownProps = { isCustomObject: boolean; onActivate: () => void; - onErase: () => void; + onDelete: () => void; scopeKey: string; }; export const SettingsObjectInactiveMenuDropDown = ({ onActivate, scopeKey, - onErase, + onDelete, isCustomObject, }: SettingsObjectInactiveMenuDropDownProps) => { const dropdownId = `${scopeKey}-settings-object-inactive-menu-dropdown`; @@ -29,8 +29,8 @@ export const SettingsObjectInactiveMenuDropDown = ({ closeDropdown(); }; - const handleErase = () => { - onErase(); + const handleDelete = () => { + onDelete(); closeDropdown(); }; @@ -50,10 +50,10 @@ export const SettingsObjectInactiveMenuDropDown = ({ /> {isCustomObject && ( )} diff --git a/packages/twenty-front/src/modules/settings/data-model/objects/__stories__/SettingsObjectInactiveMenuDropDown.stories.tsx b/packages/twenty-front/src/modules/settings/data-model/objects/__stories__/SettingsObjectInactiveMenuDropDown.stories.tsx index ed40629263..c67607f7cc 100644 --- a/packages/twenty-front/src/modules/settings/data-model/objects/__stories__/SettingsObjectInactiveMenuDropDown.stories.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/objects/__stories__/SettingsObjectInactiveMenuDropDown.stories.tsx @@ -5,12 +5,12 @@ import { ComponentDecorator } from 'twenty-ui'; import { SettingsObjectInactiveMenuDropDown } from '../SettingsObjectInactiveMenuDropDown'; const handleActivateMockFunction = fn(); -const handleEraseMockFunction = fn(); +const handleDeleteMockFunction = fn(); const ClearMocksDecorator: Decorator = (Story, context) => { if (context.parameters.clearMocks === true) { handleActivateMockFunction.mockClear(); - handleEraseMockFunction.mockClear(); + handleDeleteMockFunction.mockClear(); } return ; }; @@ -21,7 +21,7 @@ const meta: Meta = { args: { scopeKey: 'settings-object-inactive-menu-dropdown', onActivate: handleActivateMockFunction, - onErase: handleEraseMockFunction, + onDelete: handleDeleteMockFunction, }, decorators: [ComponentDecorator, ClearMocksDecorator], parameters: { @@ -64,7 +64,7 @@ export const WithActivate: Story = { }, }; -export const WithErase: Story = { +export const WithDelete: Story = { args: { isCustomObject: true }, play: async ({ canvasElement }) => { const canvas = within(canvasElement); @@ -73,13 +73,13 @@ export const WithErase: Story = { await userEvent.click(dropdownButton); - await expect(handleEraseMockFunction).toHaveBeenCalledTimes(0); + await expect(handleDeleteMockFunction).toHaveBeenCalledTimes(0); - const eraseMenuItem = await canvas.getByText('Erase'); + const deleteMenuItem = await canvas.getByText('Delete'); - await userEvent.click(eraseMenuItem); + await userEvent.click(deleteMenuItem); - await expect(handleEraseMockFunction).toHaveBeenCalledTimes(1); + await expect(handleDeleteMockFunction).toHaveBeenCalledTimes(1); await userEvent.click(dropdownButton); }, diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectDetail.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectDetail.tsx index b7bc143103..452e550c87 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectDetail.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectDetail.tsx @@ -54,15 +54,18 @@ export const SettingsObjectDetail = () => { if (!activeObjectMetadataItem) navigate(AppPath.NotFound); }, [activeObjectMetadataItem, navigate]); - const { activateMetadataField, disableMetadataField, eraseMetadataField } = - useFieldMetadataItem(); + const { + activateMetadataField, + deactivateMetadataField, + deleteMetadataField, + } = useFieldMetadataItem(); if (!activeObjectMetadataItem) return null; const activeMetadataFields = getActiveFieldMetadataItems( activeObjectMetadataItem, ); - const disabledMetadataFields = getDisabledFieldMetadataItems( + const deactivatedMetadataFields = getDisabledFieldMetadataItems( activeObjectMetadataItem, ); @@ -75,7 +78,7 @@ export const SettingsObjectDetail = () => { }; const handleDisableField = (activeFieldMetadatItem: FieldMetadataItem) => { - disableMetadataField(activeFieldMetadatItem); + deactivateMetadataField(activeFieldMetadatItem); }; const handleSetLabelIdentifierField = ( @@ -180,27 +183,27 @@ export const SettingsObjectDetail = () => { })} )} - {!!disabledMetadataFields.length && ( + {!!deactivatedMetadataFields.length && ( - {disabledMetadataFields.map((disabledMetadataField) => ( + {deactivatedMetadataFields.map((deactivatedMetadataField) => ( - activateMetadataField(disabledMetadataField) + activateMetadataField(deactivatedMetadataField) } - onErase={() => - eraseMetadataField(disabledMetadataField) + onDelete={() => + deleteMetadataField(deactivatedMetadataField) } /> } @@ -218,7 +221,7 @@ export const SettingsObjectDetail = () => { variant="secondary" onClick={() => navigate( - disabledMetadataFields.length + deactivatedMetadataFields.length ? './new-field/step-1' : './new-field/step-2', ) diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectEdit.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectEdit.tsx index 6780369159..5bfdfd9c9f 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectEdit.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectEdit.tsx @@ -146,10 +146,10 @@ export const SettingsObjectEdit = () => { />
- +
{!isLabelIdentifier && (
- +
)} diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep1.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep1.tsx index 4ccacc014b..ddd4528e9f 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep1.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep1.tsx @@ -44,14 +44,14 @@ export const SettingsObjectNewFieldStep1 = () => { const activeObjectMetadataItem = findActiveObjectMetadataItemBySlug(objectSlug); - const { activateMetadataField, disableMetadataField } = + const { activateMetadataField, deactivateMetadataField } = useFieldMetadataItem(); const [metadataFields, setMetadataFields] = useState( activeObjectMetadataItem?.fields ?? [], ); const activeMetadataFields = metadataFields.filter((field) => field.isActive); - const disabledMetadataFields = metadataFields.filter( + const deactivatedMetadataFields = metadataFields.filter( (field) => !field.isActive, ); @@ -93,7 +93,7 @@ export const SettingsObjectNewFieldStep1 = () => { return metadataField.isActive ? activateMetadataField(metadataField) - : disableMetadataField(metadataField); + : deactivateMetadataField(metadataField); }), ); @@ -124,8 +124,8 @@ export const SettingsObjectNewFieldStep1 = () => { @@ -159,18 +159,18 @@ export const SettingsObjectNewFieldStep1 = () => { ))} )} - {!!disabledMetadataFields.length && ( + {!!deactivatedMetadataFields.length && ( - {disabledMetadataFields.map((disabledMetadataField) => ( + {deactivatedMetadataFields.map((deactivatedMetadataField) => ( - handleToggleField(disabledMetadataField.id) + handleToggleField(deactivatedMetadataField.id) } /> } diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjects.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjects.tsx index fa239a0d6b..450727be20 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjects.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjects.tsx @@ -110,7 +110,7 @@ export const SettingsObjects = () => { updatePayload: { isActive: true }, }) } - onErase={() => + onDelete={() => deleteOneObjectMetadataItem( inactiveObjectMetadataItem.id, ) diff --git a/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectNewField/SettingsObjectNewFieldStep1.stories.tsx b/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectNewField/SettingsObjectNewFieldStep1.stories.tsx index 3353cc492f..d54dd9f4db 100644 --- a/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectNewField/SettingsObjectNewFieldStep1.stories.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectNewField/SettingsObjectNewFieldStep1.stories.tsx @@ -33,7 +33,7 @@ export const Default: Story = { await canvas.findByText('Settings'); await canvas.findByText('Objects'); await canvas.findByText('Companies'); - await canvas.findByText('Check disabled fields'); + await canvas.findByText('Check deactivated fields'); await canvas.findByText('Add Custom Field'); }, }; diff --git a/packages/twenty-front/src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx b/packages/twenty-front/src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx index 1e77bd5710..d272141d3c 100644 --- a/packages/twenty-front/src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx +++ b/packages/twenty-front/src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx @@ -191,7 +191,7 @@ export const SettingsDevelopersApiKeyDetail = () => {