feat: expose foreign key (#2505)

* fix: typo

* feat: expose foreign key

* fix: foreign key exposition

* fix: be able to filter by foreign key

* feat: add `isSystem` on field metadata

* feat: update all seeds

* fix: seed issues

* fix: sync metadata generated files

* fix: squash metadata migrations

* Fix conflicts

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Jérémy M
2023-11-16 12:30:40 +01:00
committed by GitHub
parent e5caa7a5df
commit e026b2b6e9
45 changed files with 786 additions and 327 deletions

View File

@ -15,13 +15,12 @@ import { FieldMetadataType } from '~/generated/graphql';
import { assertNotNull } from '~/utils/assert';
import { dataTypes } from '../constants/dataTypes';
import { MetadataFieldDataType } from '../types/ObjectFieldDataType';
export type SettingsObjectFieldPreviewProps = {
fieldIconKey?: string | null;
fieldLabel: string;
fieldName?: string;
fieldType: MetadataFieldDataType;
fieldType: FieldMetadataType;
isObjectCustom: boolean;
objectIconKey?: string | null;
objectLabelPlural: string;

View File

@ -3,9 +3,9 @@ import styled from '@emotion/styled';
import { H2Title } from '@/ui/display/typography/components/H2Title';
import { Select } from '@/ui/input/components/Select';
import { Section } from '@/ui/layout/section/components/Section';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { dataTypes } from '../constants/dataTypes';
import { MetadataFieldDataType } from '../types/ObjectFieldDataType';
import {
SettingsObjectFieldPreview,
@ -15,7 +15,7 @@ import { SettingsObjectFieldTypeCard } from './SettingsObjectFieldTypeCard';
type SettingsObjectFieldTypeSelectSectionProps = {
disabled?: boolean;
onChange?: (value: MetadataFieldDataType) => void;
onChange?: (value: FieldMetadataType) => void;
} & Pick<
SettingsObjectFieldPreviewProps,
| 'fieldIconKey'
@ -59,7 +59,7 @@ export const SettingsObjectFieldTypeSelectSection = ({
onChange={onChange}
options={Object.entries(dataTypesWithoutRelation).map(
([key, dataType]) => ({
value: key as MetadataFieldDataType,
value: key as FieldMetadataType,
...dataType,
}),
)}

View File

@ -1,6 +1,7 @@
import { MemoryRouter } from 'react-router-dom';
import { Meta, StoryObj } from '@storybook/react';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
import { SettingsObjectFieldPreview } from '../SettingsObjectFieldPreview';
@ -12,7 +13,7 @@ const meta: Meta<typeof SettingsObjectFieldPreview> = {
args: {
fieldIconKey: 'IconNotes',
fieldLabel: 'Description',
fieldType: 'TEXT',
fieldType: FieldMetadataType.Text,
isObjectCustom: false,
objectIconKey: 'IconBuildingSkyscraper',
objectLabelPlural: 'Companies',
@ -29,7 +30,7 @@ export const Boolean: Story = {
args: {
fieldIconKey: 'IconHeadphones',
fieldLabel: 'Priority Support',
fieldType: 'BOOLEAN',
fieldType: FieldMetadataType.Boolean,
},
};
@ -37,7 +38,7 @@ export const Currency: Story = {
args: {
fieldIconKey: 'IconCurrencyDollar',
fieldLabel: 'Amount',
fieldType: 'MONEY',
fieldType: FieldMetadataType.Money,
},
};
@ -45,7 +46,7 @@ export const Date: Story = {
args: {
fieldIconKey: 'IconCalendarEvent',
fieldLabel: 'Registration Date',
fieldType: 'DATE',
fieldType: FieldMetadataType.Date,
},
};
@ -60,7 +61,7 @@ export const Link: Story = {
args: {
fieldIconKey: 'IconWorldWww',
fieldLabel: 'Website',
fieldType: 'URL',
fieldType: FieldMetadataType.Url,
},
};
@ -68,7 +69,7 @@ export const Number: Story = {
args: {
fieldIconKey: 'IconUsers',
fieldLabel: 'Employees',
fieldType: 'NUMBER',
fieldType: FieldMetadataType.Number,
},
};

View File

@ -1,6 +1,7 @@
import { Meta, StoryObj } from '@storybook/react';
import { TextInput } from '@/ui/input/components/TextInput';
import { FieldMetadataType } from '~/generated/graphql';
import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
import { SettingsObjectFieldPreview } from '../SettingsObjectFieldPreview';
@ -15,7 +16,7 @@ const meta: Meta<typeof SettingsObjectFieldTypeCard> = {
<SettingsObjectFieldPreview
fieldIconKey="IconNotes"
fieldLabel="Description"
fieldType="TEXT"
fieldType={FieldMetadataType.Text}
isObjectCustom={false}
objectIconKey="IconUser"
objectLabelPlural="People"

View File

@ -1,6 +1,7 @@
import { Meta, StoryObj } from '@storybook/react';
import { userEvent, within } from '@storybook/testing-library';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
import { SettingsObjectFieldTypeSelectSection } from '../SettingsObjectFieldTypeSelectSection';
@ -10,7 +11,7 @@ const meta: Meta<typeof SettingsObjectFieldTypeSelectSection> = {
component: SettingsObjectFieldTypeSelectSection,
decorators: [ComponentDecorator],
args: {
fieldType: 'NUMBER',
fieldType: FieldMetadataType.Number,
fieldIconKey: 'IconUsers',
fieldLabel: 'Employees',
fieldName: 'employees',