Fix ObjectType casing and conflict between Relation and RelationMetadata (#9849)

Fixes #9827 

Also uncovered a conflict with `@objectType('Relation')` and
`@objectType('relation)`

I don't want to address it in this PR so I will create a followup issue
when we close this but I think there's a confusion between
Relation/RelationMetadata, it's unclear what is what

---------

Co-authored-by: Antoine Moreaux <moreaux.antoine@gmail.com>
This commit is contained in:
Félix Malfait
2025-01-28 10:06:18 +01:00
committed by GitHub
parent 08a0e67477
commit af8d22ee99
70 changed files with 22258 additions and 22058 deletions

View File

@ -43,8 +43,10 @@ export const CREATE_ONE_FIELD_METADATA_ITEM = gql`
`;
export const CREATE_ONE_RELATION_METADATA_ITEM = gql`
mutation CreateOneRelationMetadata($input: CreateOneRelationInput!) {
createOneRelation(input: $input) {
mutation CreateOneRelationMetadataItem(
$input: CreateOneRelationMetadataInput!
) {
createOneRelationMetadata(input: $input) {
id
relationType
fromObjectMetadataId

View File

@ -2,8 +2,8 @@ import { gql } from '@apollo/client';
export const FIND_MANY_OBJECT_METADATA_ITEMS = gql`
query ObjectMetadataItems(
$objectFilter: objectFilter
$fieldFilter: fieldFilter
$objectFilter: ObjectFilter
$fieldFilter: FieldFilter
) {
objects(paging: { first: 1000 }, filter: $objectFilter) {
edges {

View File

@ -1,8 +1,10 @@
import { gql } from '@apollo/client';
export const query = gql`
mutation CreateOneRelationMetadata($input: CreateOneRelationInput!) {
createOneRelation(input: $input) {
mutation CreateOneRelationMetadataItem(
$input: CreateOneRelationMetadataInput!
) {
createOneRelationMetadata(input: $input) {
id
relationType
fromObjectMetadataId
@ -17,7 +19,7 @@ export const query = gql`
export const variables = {
input: {
relation: {
relationMetadata: {
fromDescription: null,
fromIcon: undefined,
fromLabel: 'label',

View File

@ -2,7 +2,7 @@ import { gql } from '@apollo/client';
import { mockedStandardObjectMetadataQueryResult } from '~/testing/mock-data/generated/mock-metadata-query-result';
export const query = gql`
query ObjectMetadataItems($objectFilter: objectFilter, $fieldFilter: fieldFilter) {
query ObjectMetadataItems($objectFilter: ObjectFilter, $fieldFilter: FieldFilter) {
objects(paging: {first: 1000}, filter: $objectFilter) {
edges {
node {

View File

@ -1,8 +1,8 @@
import { useMutation } from '@apollo/client';
import {
CreateOneRelationMetadataMutation,
CreateOneRelationMetadataMutationVariables,
CreateOneRelationMetadataItemMutation,
CreateOneRelationMetadataItemMutationVariables,
} from '~/generated-metadata/graphql';
import { CREATE_ONE_RELATION_METADATA_ITEM } from '../graphql/mutations';
@ -18,8 +18,8 @@ export const useCreateOneRelationMetadataItem = () => {
const apolloMetadataClient = useApolloMetadataClient();
const [mutate] = useMutation<
CreateOneRelationMetadataMutation,
CreateOneRelationMetadataMutationVariables
CreateOneRelationMetadataItemMutation,
CreateOneRelationMetadataItemMutationVariables
>(CREATE_ONE_RELATION_METADATA_ITEM, {
client: apolloMetadataClient,
});
@ -31,7 +31,9 @@ export const useCreateOneRelationMetadataItem = () => {
input: FormatRelationMetadataInputParams,
) => {
const result = await mutate({
variables: { input: { relation: formatRelationMetadataInput(input) } },
variables: {
input: { relationMetadata: formatRelationMetadataInput(input) },
},
});
await refreshObjectMetadataItems();

View File

@ -11,7 +11,7 @@ import { camelCaseStringSchema } from '~/utils/validation-schemas/camelCaseStrin
export const fieldMetadataItemSchema = (existingLabels?: string[]) => {
return z.object({
__typename: z.literal('field').optional(),
__typename: z.literal('Field').optional(),
createdAt: z.string().datetime(),
defaultValue: z.any().optional(),
description: z.string().trim().nullable().optional(),
@ -44,23 +44,23 @@ export const fieldMetadataItemSchema = (existingLabels?: string[]) => {
relationId: z.string().uuid(),
direction: z.nativeEnum(RelationDefinitionType),
sourceFieldMetadata: z.object({
__typename: z.literal('field').optional(),
__typename: z.literal('Field').optional(),
id: z.string().uuid(),
name: z.string().trim().min(1),
}),
sourceObjectMetadata: z.object({
__typename: z.literal('object').optional(),
__typename: z.literal('Object').optional(),
id: z.string().uuid(),
namePlural: z.string().trim().min(1),
nameSingular: z.string().trim().min(1),
}),
targetFieldMetadata: z.object({
__typename: z.literal('field').optional(),
__typename: z.literal('Field').optional(),
id: z.string().uuid(),
name: z.string().trim().min(1),
}),
targetObjectMetadata: z.object({
__typename: z.literal('object').optional(),
__typename: z.literal('Object').optional(),
id: z.string().uuid(),
namePlural: z.string().trim().min(1),
nameSingular: z.string().trim().min(1),

View File

@ -3,7 +3,7 @@ import { z } from 'zod';
import { IndexFieldMetadataItem } from '@/object-metadata/types/IndexFieldMetadataItem';
export const indexFieldMetadataItemSchema = z.object({
__typename: z.literal('indexField'),
__typename: z.literal('IndexField'),
fieldMetadataId: z.string().uuid(),
id: z.string(),
createdAt: z.string(),

View File

@ -5,7 +5,7 @@ import { indexFieldMetadataItemSchema } from '@/object-metadata/validation-schem
import { IndexType } from '~/generated-metadata/graphql';
export const indexMetadataItemSchema = z.object({
__typename: z.literal('index'),
__typename: z.literal('Index'),
id: z.string().uuid(),
name: z.string(),
indexFieldMetadatas: z.array(indexFieldMetadataItemSchema),

View File

@ -7,7 +7,7 @@ import { metadataLabelSchema } from '@/object-metadata/validation-schemas/metada
import { camelCaseStringSchema } from '~/utils/validation-schemas/camelCaseStringSchema';
export const objectMetadataItemSchema = z.object({
__typename: z.literal('object').optional(),
__typename: z.literal('Object').optional(),
createdAt: z.string().datetime(),
dataSourceId: z.string().uuid(),
description: z.string().trim().nullable().optional(),

View File

@ -17,7 +17,7 @@ import {
IconSettings,
} from 'twenty-ui';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { FeatureFlag, FeatureFlagKey } from '~/generated/graphql';
import { FeatureFlagKey } from '~/generated/graphql';
export const useRecordShowContainerTabs = (
loading: boolean,
@ -252,7 +252,7 @@ export const useRecordShowContainerTabs = (
hide.ifFeaturesDisabled.length > 0 &&
!hide.ifFeaturesDisabled.every((flagKey) => {
return !!currentWorkspace?.featureFlags?.find(
(flag: FeatureFlag) => flag.key === flagKey && flag.value,
(flag) => flag.key === flagKey && flag.value,
);
});