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

@ -8,7 +8,10 @@ import { useFindManyObjectMetadataItems } from '../hooks/useFindManyObjectMetada
export const ObjectMetadataNavItems = () => {
const { objectMetadataItems } = useFindManyObjectMetadataItems({
filter: {
objectFilter: {
isSystem: { is: false },
},
fieldFilter: {
isSystem: { is: false },
},
});

View File

@ -1,8 +1,11 @@
import { gql } from '@apollo/client';
export const FIND_MANY_METADATA_OBJECTS = gql`
query ObjectMetadataItems($filter: objectFilter) {
objects(paging: { first: 1000 }, filter: $filter) {
query ObjectMetadataItems(
$objectFilter: objectFilter
$fieldFilter: fieldFilter
) {
objects(paging: { first: 1000 }, filter: $objectFilter) {
edges {
node {
id
@ -18,7 +21,7 @@ export const FIND_MANY_METADATA_OBJECTS = gql`
isSystem
createdAt
updatedAt
fields(paging: { first: 1000 }) {
fields(paging: { first: 1000 }, filter: $fieldFilter) {
edges {
node {
id
@ -29,6 +32,7 @@ export const FIND_MANY_METADATA_OBJECTS = gql`
icon
isCustom
isActive
isSystem
isNullable
createdAt
updatedAt

View File

@ -1,5 +1,6 @@
import { MetadataFieldDataType } from '@/settings/data-model/types/ObjectFieldDataType';
import { FieldType } from '@/ui/object/field/types/FieldType';
import { Field } from '~/generated/graphql';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { FieldMetadataItem } from '../types/FieldMetadataItem';
import { formatFieldMetadataItemInput } from '../utils/formatFieldMetadataItemInput';
@ -16,13 +17,13 @@ export const useFieldMetadataItem = () => {
const createMetadataField = (
input: Pick<Field, 'label' | 'icon' | 'description'> & {
objectMetadataId: string;
type: MetadataFieldDataType;
type: FieldMetadataType;
},
) =>
createOneFieldMetadataItem({
...formatFieldMetadataItemInput(input),
objectMetadataId: input.objectMetadataId,
type: input.type,
type: input.type as FieldType,
});
const editMetadataField = (

View File

@ -3,6 +3,7 @@ import { useQuery } from '@apollo/client';
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
import {
FieldFilter,
ObjectFilter,
ObjectMetadataItemsQuery,
ObjectMetadataItemsQueryVariables,
@ -17,8 +18,13 @@ import { useApolloMetadataClient } from './useApolloMetadataClient';
// TODO: test fetchMore
export const useFindManyObjectMetadataItems = ({
skip,
filter,
}: { skip?: boolean; filter?: ObjectFilter } = {}) => {
objectFilter,
fieldFilter,
}: {
skip?: boolean;
objectFilter?: ObjectFilter;
fieldFilter?: FieldFilter;
} = {}) => {
const apolloMetadataClient = useApolloMetadataClient();
const { enqueueSnackBar } = useSnackBar();
@ -32,7 +38,8 @@ export const useFindManyObjectMetadataItems = ({
FIND_MANY_METADATA_OBJECTS,
{
variables: {
filter,
objectFilter,
fieldFilter,
},
client: apolloMetadataClient ?? undefined,
skip: skip || !apolloMetadataClient,

View File

@ -32,7 +32,7 @@ export const useFindManyObjectMetadataItems = ({
FIND_MANY_METADATA_OBJECTS,
{
variables: {
filter,
objectFilter: filter,
},
client: apolloMetadataClient ?? undefined,
skip: skip || !apolloMetadataClient,

View File

@ -9,7 +9,10 @@ import { useUpdateOneObjectMetadataItem } from './useUpdateOneObjectMetadataItem
export const useObjectMetadataItemForSettings = () => {
const { objectMetadataItems, loading } = useFindManyObjectMetadataItems({
filter: {
objectFilter: {
isSystem: { is: false },
},
fieldFilter: {
isSystem: { is: false },
},
});