Split components into object-metadata and object-record (#2425)

* Split components into object-metadata and object-record

* Fix seed
This commit is contained in:
Charles Bochet
2023-11-10 15:54:32 +01:00
committed by GitHub
parent 04c618284f
commit 54d7acd518
93 changed files with 209 additions and 266 deletions

View File

@ -8,8 +8,8 @@ import { isNonEmptyArray } from '@sniptt/guards';
import { useRecoilCallback } from 'recoil';
import { GET_COMPANIES } from '@/companies/graphql/queries/getCompanies';
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { generateFindManyCustomObjectsQuery } from '@/metadata/utils/generateFindManyCustomObjectsQuery';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { generateFindManyCustomObjectsQuery } from '@/object-record/utils/generateFindManyCustomObjectsQuery';
import { GET_PEOPLE } from '@/people/graphql/queries/getPeople';
import { GET_API_KEYS } from '@/settings/developers/graphql/queries/getApiKeys';
import {

View File

@ -1,6 +1,6 @@
import { DocumentNode } from 'graphql';
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { OptimisticEffectResolver } from './OptimisticEffectResolver';

View File

@ -1,6 +1,6 @@
import { ApolloCache, DocumentNode, OperationVariables } from '@apollo/client';
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
type OptimisticEffectWriter<T> = ({
cache,

View File

@ -1,46 +0,0 @@
import { useMemo } from 'react';
import { useQuery } from '@apollo/client';
import {
ObjectMetadataItemsQuery,
ObjectMetadataItemsQueryVariables,
} from '~/generated-metadata/graphql';
import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
import { formatPagedObjectMetadataItemsToObjectMetadataItems } from '../utils/formatPagedObjectMetadataItemsToObjectMetadataItems';
import { useApolloMetadataClient } from './useApolloMetadataClient';
// TODO: test fetchMore
export const useFindAllMetadata = () => {
const apolloMetadataClient = useApolloMetadataClient();
const { data, fetchMore: fetchMoreInternal } = useQuery<
ObjectMetadataItemsQuery,
ObjectMetadataItemsQueryVariables
>(FIND_MANY_METADATA_OBJECTS, {
client: apolloMetadataClient ?? ({} as any),
skip: !apolloMetadataClient,
});
const hasMore = data?.objects?.pageInfo?.hasNextPage;
const fetchMore = () =>
fetchMoreInternal({
variables: {
afterCursor: data?.objects?.pageInfo?.endCursor,
},
});
const objectMetadataItems = useMemo(() => {
return formatPagedObjectMetadataItemsToObjectMetadataItems({
pagedObjectMetadataItems: data,
});
}, [data]);
return {
objectMetadataItems,
hasMore,
fetchMore,
};
};

View File

@ -1,8 +0,0 @@
import { atomFamily } from 'recoil';
export const fetchMoreObjectsFamilyState = atomFamily<
{ fetchMore: () => void },
string
>({
key: 'fetchMoreObjectsFamilyState',
});

View File

@ -20,7 +20,7 @@ export const CREATE_ONE_METADATA_OBJECT = gql`
`;
export const CREATE_ONE_METADATA_FIELD = gql`
mutation CreateOneMetadataField($input: CreateOneFieldInput!) {
mutation CreateOneFieldMetadataItem($input: CreateOneFieldInput!) {
createOneField(input: $input) {
id
type
@ -39,7 +39,7 @@ export const CREATE_ONE_METADATA_FIELD = gql`
`;
export const UPDATE_ONE_METADATA_FIELD = gql`
mutation UpdateOneMetadataField(
mutation UpdateOneFieldMetadataItem(
$idToUpdate: ID!
$updatePayload: UpdateFieldInput!
) {
@ -102,7 +102,7 @@ export const DELETE_ONE_METADATA_OBJECT = gql`
`;
export const DELETE_ONE_METADATA_FIELD = gql`
mutation DeleteOneMetadataField($idToDelete: ID!) {
mutation DeleteOneFieldMetadataItem($idToDelete: ID!) {
deleteOneField(input: { id: $idToDelete }) {
id
type

View File

@ -4,8 +4,8 @@ import { getOperationName } from '@apollo/client/utilities';
import { FieldType } from '@/ui/object/field/types/FieldType';
import { FieldMetadataType } from '~/generated/graphql';
import {
CreateOneMetadataFieldMutation,
CreateOneMetadataFieldMutationVariables,
CreateOneFieldMetadataItemMutation,
CreateOneFieldMetadataItemMutationVariables,
} from '~/generated-metadata/graphql';
import { CREATE_ONE_METADATA_FIELD } from '../graphql/mutations';
@ -13,24 +13,26 @@ import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
import { useApolloMetadataClient } from './useApolloMetadataClient';
type CreateOneMetadataFieldArgs = Omit<
CreateOneMetadataFieldMutationVariables['input']['field'],
type CreateOneFieldMetadataItemArgs = Omit<
CreateOneFieldMetadataItemMutationVariables['input']['field'],
'type'
> & {
type: FieldType;
};
export const useCreateOneMetadataField = () => {
export const useCreateOneFieldMetadataItem = () => {
const apolloMetadataClient = useApolloMetadataClient();
const [mutate] = useMutation<
CreateOneMetadataFieldMutation,
CreateOneMetadataFieldMutationVariables
CreateOneFieldMetadataItemMutation,
CreateOneFieldMetadataItemMutationVariables
>(CREATE_ONE_METADATA_FIELD, {
client: apolloMetadataClient ?? ({} as ApolloClient<any>),
});
const createOneMetadataField = async (input: CreateOneMetadataFieldArgs) => {
const createOneFieldMetadataItem = async (
input: CreateOneFieldMetadataItemArgs,
) => {
return await mutate({
variables: {
input: {
@ -46,6 +48,6 @@ export const useCreateOneMetadataField = () => {
};
return {
createOneMetadataField,
createOneFieldMetadataItem,
};
};

View File

@ -11,7 +11,7 @@ import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
import { useApolloMetadataClient } from './useApolloMetadataClient';
export const useCreateOneObjectMetadataItem = () => {
export const useCreateOneObjectRecordMetadataItem = () => {
const apolloMetadataClient = useApolloMetadataClient();
const [mutate] = useMutation<

View File

@ -2,8 +2,8 @@ import { ApolloClient, useMutation } from '@apollo/client';
import { getOperationName } from '@apollo/client/utilities';
import {
DeleteOneMetadataFieldMutation,
DeleteOneMetadataFieldMutationVariables,
DeleteOneFieldMetadataItemMutation,
DeleteOneFieldMetadataItemMutationVariables,
} from '~/generated-metadata/graphql';
import { DELETE_ONE_METADATA_FIELD } from '../graphql/mutations';
@ -11,18 +11,18 @@ import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
import { useApolloMetadataClient } from './useApolloMetadataClient';
export const useDeleteOneMetadataField = () => {
export const useDeleteOneFieldMetadataItem = () => {
const apolloMetadataClient = useApolloMetadataClient();
const [mutate] = useMutation<
DeleteOneMetadataFieldMutation,
DeleteOneMetadataFieldMutationVariables
DeleteOneFieldMetadataItemMutation,
DeleteOneFieldMetadataItemMutationVariables
>(DELETE_ONE_METADATA_FIELD, {
client: apolloMetadataClient ?? ({} as ApolloClient<any>),
});
const deleteOneMetadataField = async (
idToDelete: DeleteOneMetadataFieldMutationVariables['idToDelete'],
const deleteOneFieldMetadataItem = async (
idToDelete: DeleteOneFieldMetadataItemMutationVariables['idToDelete'],
) => {
return await mutate({
variables: {
@ -34,6 +34,6 @@ export const useDeleteOneMetadataField = () => {
};
return {
deleteOneMetadataField,
deleteOneFieldMetadataItem,
};
};

View File

@ -1,16 +1,16 @@
import { MetadataFieldDataType } from '@/settings/data-model/types/ObjectFieldDataType';
import { Field } from '~/generated/graphql';
import { formatMetadataFieldInput } from '../utils/formatMetadataFieldInput';
import { formatFieldMetadataItemInput } from '../utils/formatFieldMetadataItemInput';
import { useCreateOneMetadataField } from './useCreateOneMetadataField';
import { useDeleteOneMetadataField } from './useDeleteOneMetadataField';
import { useUpdateOneMetadataField } from './useUpdateOneMetadataField';
import { useCreateOneFieldMetadataItem } from './useCreateOneFieldMetadataItem';
import { useDeleteOneFieldMetadataItem } from './useDeleteOneFieldMetadataItem';
import { useUpdateOneFieldMetadataItem } from './useUpdateOneFieldMetadataItem';
export const useMetadataField = () => {
const { createOneMetadataField } = useCreateOneMetadataField();
const { updateOneMetadataField } = useUpdateOneMetadataField();
const { deleteOneMetadataField } = useDeleteOneMetadataField();
export const useFieldMetadataItem = () => {
const { createOneFieldMetadataItem } = useCreateOneFieldMetadataItem();
const { updateOneFieldMetadataItem } = useUpdateOneFieldMetadataItem();
const { deleteOneFieldMetadataItem } = useDeleteOneFieldMetadataItem();
const createMetadataField = (
input: Pick<Field, 'label' | 'icon' | 'description'> & {
@ -18,8 +18,8 @@ export const useMetadataField = () => {
type: MetadataFieldDataType;
},
) =>
createOneMetadataField({
...formatMetadataFieldInput(input),
createOneFieldMetadataItem({
...formatFieldMetadataItemInput(input),
objectMetadataId: input.objectMetadataId,
type: input.type,
});
@ -27,25 +27,25 @@ export const useMetadataField = () => {
const editMetadataField = (
input: Pick<Field, 'id' | 'label' | 'icon' | 'description'>,
) =>
updateOneMetadataField({
updateOneFieldMetadataItem({
fieldMetadataIdToUpdate: input.id,
updatePayload: formatMetadataFieldInput(input),
updatePayload: formatFieldMetadataItemInput(input),
});
const activateMetadataField = (metadataField: Field) =>
updateOneMetadataField({
updateOneFieldMetadataItem({
fieldMetadataIdToUpdate: metadataField.id,
updatePayload: { isActive: true },
});
const disableMetadataField = (metadataField: Field) =>
updateOneMetadataField({
updateOneFieldMetadataItem({
fieldMetadataIdToUpdate: metadataField.id,
updatePayload: { isActive: false },
});
const eraseMetadataField = (metadataField: Field) =>
deleteOneMetadataField(metadataField.id);
deleteOneFieldMetadataItem(metadataField.id);
return {
activateMetadataField,

View File

@ -1,5 +1,10 @@
import { gql } from '@apollo/client';
import { generateCreateOneObjectMutation } from '@/object-record/utils/generateCreateOneObjectMutation';
import { generateDeleteOneObjectMutation } from '@/object-record/utils/generateDeleteOneObjectMutation';
import { generateFindManyCustomObjectsQuery } from '@/object-record/utils/generateFindManyCustomObjectsQuery';
import { generateFindOneCustomObjectQuery } from '@/object-record/utils/generateFindOneCustomObjectQuery';
import { generateUpdateOneObjectMutation } from '@/object-record/utils/generateUpdateOneObjectMutation';
import { useLazyLoadIcons } from '@/ui/input/hooks/useLazyLoadIcons';
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
import { FilterDefinition } from '@/ui/object/object-filter-dropdown/types/FilterDefinition';
@ -7,14 +12,9 @@ import { SortDefinition } from '@/ui/object/object-sort-dropdown/types/SortDefin
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition';
import { formatMetadataFieldAsFilterDefinition } from '../utils/formatMetadataFieldAsFilterDefinition';
import { formatMetadataFieldAsSortDefinition } from '../utils/formatMetadataFieldAsSortDefinition';
import { generateCreateOneObjectMutation } from '../utils/generateCreateOneObjectMutation';
import { generateDeleteOneObjectMutation } from '../utils/generateDeleteOneObjectMutation';
import { generateFindManyCustomObjectsQuery } from '../utils/generateFindManyCustomObjectsQuery';
import { generateFindOneCustomObjectQuery } from '../utils/generateFindOneCustomObjectQuery';
import { generateUpdateOneObjectMutation } from '../utils/generateUpdateOneObjectMutation';
import { formatFieldMetadataItemAsColumnDefinition } from '../utils/formatFieldMetadataItemAsColumnDefinition';
import { formatFieldMetadataItemAsFilterDefinition } from '../utils/formatFieldMetadataItemAsFilterDefinition';
import { formatFieldMetadataItemAsSortDefinition } from '../utils/formatFieldMetadataItemAsSortDefinition';
import { useFindManyObjectMetadataItems } from './useFindManyObjectMetadataItems';
@ -57,7 +57,7 @@ export const useFindOneObjectMetadataItem = ({
const columnDefinitions: ColumnDefinition<FieldMetadata>[] =
foundObjectMetadataItem
? activeFields.map((field, index) =>
formatMetadataFieldAsColumnDefinition({
formatFieldMetadataItemAsColumnDefinition({
position: index,
field,
objectMetadataItem: foundObjectMetadataItem,
@ -67,14 +67,14 @@ export const useFindOneObjectMetadataItem = ({
: [];
const filterDefinitions: FilterDefinition[] = activeFields.map((field) =>
formatMetadataFieldAsFilterDefinition({
formatFieldMetadataItemAsFilterDefinition({
field,
icons,
}),
);
const sortDefinitions: SortDefinition[] = activeFields.map((field) =>
formatMetadataFieldAsSortDefinition({
formatFieldMetadataItemAsSortDefinition({
field,
icons,
}),

View File

@ -2,7 +2,7 @@ import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
import { formatObjectMetadataItemInput } from '../utils/formatObjectMetadataItemInput';
import { getObjectSlug } from '../utils/getObjectSlug';
import { useCreateOneObjectMetadataItem } from './useCreateOneObjectMetadataItem';
import { useCreateOneObjectRecordMetadataItem } from './useCreateOneObjectMetadataItem';
import { useDeleteOneObjectMetadataItem } from './useDeleteOneObjectMetadataItem';
import { useFindManyObjectMetadataItems } from './useFindManyObjectMetadataItems';
import { useUpdateOneObjectMetadataItem } from './useUpdateOneObjectMetadataItem';
@ -23,7 +23,8 @@ export const useObjectMetadataItemForSettings = () => {
getObjectSlug(activeObjectMetadataItem) === slug,
);
const { createOneObjectMetadataItem } = useCreateOneObjectMetadataItem();
const { createOneObjectMetadataItem } =
useCreateOneObjectRecordMetadataItem();
const { updateOneObjectMetadataItem } = useUpdateOneObjectMetadataItem();
const { deleteOneObjectMetadataItem } = useDeleteOneObjectMetadataItem();

View File

@ -2,8 +2,8 @@ import { useMutation } from '@apollo/client';
import { getOperationName } from '@apollo/client/utilities';
import {
UpdateOneMetadataFieldMutation,
UpdateOneMetadataFieldMutationVariables,
UpdateOneFieldMetadataItemMutation,
UpdateOneFieldMetadataItemMutationVariables,
} from '~/generated-metadata/graphql';
import { UPDATE_ONE_METADATA_FIELD } from '../graphql/mutations';
@ -11,23 +11,23 @@ import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
import { useApolloMetadataClient } from './useApolloMetadataClient';
export const useUpdateOneMetadataField = () => {
export const useUpdateOneFieldMetadataItem = () => {
const apolloMetadataClient = useApolloMetadataClient();
const [mutate] = useMutation<
UpdateOneMetadataFieldMutation,
UpdateOneMetadataFieldMutationVariables
UpdateOneFieldMetadataItemMutation,
UpdateOneFieldMetadataItemMutationVariables
>(UPDATE_ONE_METADATA_FIELD, {
client: apolloMetadataClient ?? undefined,
});
const updateOneMetadataField = async ({
const updateOneFieldMetadataItem = async ({
fieldMetadataIdToUpdate,
updatePayload,
}: {
fieldMetadataIdToUpdate: UpdateOneMetadataFieldMutationVariables['idToUpdate'];
fieldMetadataIdToUpdate: UpdateOneFieldMetadataItemMutationVariables['idToUpdate'];
updatePayload: Pick<
UpdateOneMetadataFieldMutationVariables['updatePayload'],
UpdateOneFieldMetadataItemMutationVariables['updatePayload'],
'description' | 'icon' | 'isActive' | 'label' | 'name'
>;
}) => {
@ -45,6 +45,6 @@ export const useUpdateOneMetadataField = () => {
};
return {
updateOneMetadataField,
updateOneFieldMetadataItem,
};
};

View File

@ -7,7 +7,7 @@ import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
import { parseFieldType } from './parseFieldType';
export const formatMetadataFieldAsColumnDefinition = ({
export const formatFieldMetadataItemAsColumnDefinition = ({
position,
field,
objectMetadataItem,

View File

@ -2,7 +2,7 @@ import { FilterDefinition } from '@/ui/object/object-filter-dropdown/types/Filte
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const formatMetadataFieldAsFilterDefinition = ({
export const formatFieldMetadataItemAsFilterDefinition = ({
field,
icons,
}: {

View File

@ -2,7 +2,7 @@ import { SortDefinition } from '@/ui/object/object-sort-dropdown/types/SortDefin
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const formatMetadataFieldAsSortDefinition = ({
export const formatFieldMetadataItemAsSortDefinition = ({
field,
icons,
}: {

View File

@ -2,7 +2,7 @@ import toCamelCase from 'lodash.camelcase';
import { Field } from '~/generated-metadata/graphql';
export const formatMetadataFieldInput = (
export const formatFieldMetadataItemInput = (
input: Pick<Field, 'label' | 'icon' | 'description'>,
) => ({
description: input.description?.trim() ?? null,

View File

@ -3,6 +3,8 @@ import { DateTime } from 'luxon';
import { useRecoilState } from 'recoil';
import { ActivityTargetableEntityType } from '@/activities/types/ActivityTargetableEntity';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
import { IconBuildingSkyscraper } from '@/ui/display/icon';
import { useLazyLoadIcons } from '@/ui/input/hooks/useLazyLoadIcons';
import { PageBody } from '@/ui/layout/page/PageBody';
@ -23,10 +25,8 @@ import { InlineCellHotkeyScope } from '@/ui/object/record-inline-cell/types/Inli
import { PageTitle } from '@/ui/utilities/page-title/PageTitle';
import { RecoilScope } from '@/ui/utilities/recoil-scope/components/RecoilScope';
import { useFindOneObject } from '../hooks/useFindOneObject';
import { useFindOneObjectMetadataItem } from '../hooks/useFindOneObjectMetadataItem';
import { useUpdateOneObject } from '../hooks/useUpdateOneObject';
import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition';
import { useFindOneObjectRecord } from '../hooks/useFindOneObjectRecord';
import { useUpdateOneObjectRecord } from '../hooks/useUpdateOneObjectRecord';
export const RecordShowPage = () => {
const { objectNameSingular, objectMetadataId } = useParams<{
@ -44,7 +44,7 @@ export const RecordShowPage = () => {
entityFieldsFamilyState(objectMetadataId ?? ''),
);
const { object } = useFindOneObject({
const { object } = useFindOneObjectRecord({
objectMetadataId: objectMetadataId,
objectNameSingular,
onCompleted: (data) => {
@ -53,7 +53,7 @@ export const RecordShowPage = () => {
});
const useUpdateOneObjectMutation: () => [(params: any) => any, any] = () => {
const { updateOneObject } = useUpdateOneObject({
const { updateOneObject } = useUpdateOneObjectRecord({
objectNameSingular,
});
@ -130,7 +130,7 @@ export const RecordShowPage = () => {
entityId: object.id,
recoilScopeId: object.id + metadataField.id,
fieldDefinition:
formatMetadataFieldAsColumnDefinition({
formatFieldMetadataItemAsColumnDefinition({
field: metadataField,
position: index,
objectMetadataItem: foundObjectMetadataItem,

View File

@ -1,6 +1,7 @@
import styled from '@emotion/styled';
import { useRecoilCallback } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { RecordTable } from '@/ui/object/record-table/components/RecordTable';
import { TableOptionsDropdownId } from '@/ui/object/record-table/constants/TableOptionsDropdownId';
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
@ -15,8 +16,7 @@ import { mapViewFieldsToColumnDefinitions } from '@/views/utils/mapViewFieldsToC
import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters';
import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts';
import { useFindOneObjectMetadataItem } from '../hooks/useFindOneObjectMetadataItem';
import { useUpdateOneObject } from '../hooks/useUpdateOneObject';
import { useUpdateOneObjectRecord } from '../hooks/useUpdateOneObjectRecord';
import { RecordTableEffect } from './RecordTableEffect';
@ -37,7 +37,7 @@ export const RecordTableContainer = ({
objectNamePlural,
});
const { updateOneObject } = useUpdateOneObject({
const { updateOneObject } = useUpdateOneObjectRecord({
objectNamePlural,
objectNameSingular: foundObjectMetadataItem?.nameSingular,
});

View File

@ -1,12 +1,10 @@
import { useEffect } from 'react';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
import { useView } from '@/views/hooks/useView';
import { ViewType } from '@/views/types/ViewType';
import { useFindOneObjectMetadataItem } from '../hooks/useFindOneObjectMetadataItem';
import { useTableObjects } from '../hooks/useTableObjects';
export const RecordTableEffect = () => {
const { scopeId: objectNamePlural, setAvailableTableColumns } =
useRecordTable();
@ -28,7 +26,7 @@ export const RecordTableEffect = () => {
setViewObjectMetadataId,
} = useView();
useTableObjects();
useRecordTable();
useEffect(() => {
if (!foundObjectMetadataItem) {

View File

@ -2,8 +2,8 @@ import { useEffect } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import styled from '@emotion/styled';
import { RecordTableContainer } from '@/metadata/components/RecordTableContainer';
import { ObjectMetadataItemIdentifier } from '@/metadata/types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { IconBuildingSkyscraper } from '@/ui/display/icon';
import { PageAddButton } from '@/ui/layout/page/PageAddButton';
import { PageBody } from '@/ui/layout/page/PageBody';
@ -13,8 +13,9 @@ import { PageHotkeysEffect } from '@/ui/layout/page/PageHotkeysEffect';
import { RecordTableActionBar } from '@/ui/object/record-table/action-bar/components/RecordTableActionBar';
import { RecordTableContextMenu } from '@/ui/object/record-table/context-menu/components/RecordTableContextMenu';
import { useCreateOneObject } from '../hooks/useCreateOneObject';
import { useFindOneObjectMetadataItem } from '../hooks/useFindOneObjectMetadataItem';
import { useCreateOneObjectRecord } from '../hooks/useCreateOneObjectRecord';
import { RecordTableContainer } from './RecordTableContainer';
const StyledTableContainer = styled.div`
display: flex;
@ -41,7 +42,7 @@ export const RecordTablePage = () => {
}
}, [objectNotFoundInMetadata, loading, navigate]);
const { createOneObject } = useCreateOneObject({
const { createOneObject } = useCreateOneObjectRecord({
objectNamePlural,
});

View File

@ -1,8 +1,8 @@
import { produce } from 'immer';
import { OptimisticEffectDefinition } from '@/apollo/optimistic-effect/types/OptimisticEffectDefinition';
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { PaginatedObjectTypeResults } from '@/metadata/types/PaginatedObjectTypeResults';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { PaginatedObjectTypeResults } from '@/object-record/types/PaginatedObjectTypeResults';
import { capitalize } from '~/utils/string/capitalize';
export const getRecordOptimisticEffectDefinition = ({

View File

@ -1,13 +1,11 @@
import { useMutation } from '@apollo/client';
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { Currency, FieldMetadataType } from '~/generated-metadata/graphql';
import { capitalize } from '~/utils/string/capitalize';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from './useFindOneObjectMetadataItem';
const defaultFieldValues: Record<FieldMetadataType, unknown> = {
[FieldMetadataType.Money]: { amount: null, currency: Currency.Usd },
[FieldMetadataType.Boolean]: false,
@ -22,7 +20,7 @@ const defaultFieldValues: Record<FieldMetadataType, unknown> = {
[FieldMetadataType.Uuid]: '',
};
export const useCreateOneObject = ({
export const useCreateOneObjectRecord = ({
objectNamePlural,
}: Pick<ObjectMetadataItemIdentifier, 'objectNamePlural'>) => {
const { triggerOptimisticEffects } = useOptimisticEffect();

View File

@ -1,11 +1,10 @@
import { useMutation } from '@apollo/client';
import { getOperationName } from '@apollo/client/utilities';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from './useFindOneObjectMetadataItem';
export const useDeleteOneObject = ({
export const useDeleteOneObjectRecord = ({
objectNamePlural,
}: Pick<ObjectMetadataItemIdentifier, 'objectNamePlural'>) => {
const {

View File

@ -4,6 +4,8 @@ import { isNonEmptyArray } from '@apollo/client/utilities';
import { isNonEmptyString } from '@sniptt/guards';
import { useRecoilState } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { useSnackBar } from '@/ui/feedback/snack-bar/hooks/useSnackBar';
import { logError } from '~/utils/logError';
import { capitalize } from '~/utils/string/capitalize';
@ -11,7 +13,6 @@ import { capitalize } from '~/utils/string/capitalize';
import { cursorFamilyState } from '../states/cursorFamilyState';
import { hasNextPageFamilyState } from '../states/hasNextPageFamilyState';
import { isFetchingMoreObjectsFamilyState } from '../states/isFetchingMoreObjectsFamilyState';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { PaginatedObjectType } from '../types/PaginatedObjectType';
import {
PaginatedObjectTypeEdge,
@ -19,11 +20,9 @@ import {
} from '../types/PaginatedObjectTypeResults';
import { formatPagedObjectsToObjects } from '../utils/formatPagedObjectsToObjects';
import { useFindOneObjectMetadataItem } from './useFindOneObjectMetadataItem';
// TODO: test with a wrong name
// TODO: add zod to validate that we have at least id on each object
export const useFindManyObjects = <
export const useFindManyObjectRecords = <
ObjectType extends { id: string } & Record<string, any>,
>({
objectNamePlural,
@ -76,9 +75,11 @@ export const useFindManyObjects = <
}
},
onError: (error) => {
logError(`useFindManyObjects for "${objectNamePlural}" error : ` + error);
logError(
`useFindManyObjectRecords for "${objectNamePlural}" error : ` + error,
);
enqueueSnackBar(
`Error during useFindManyObjects for "${objectNamePlural}", ${error.message}`,
`Error during useFindManyObjectRecords for "${objectNamePlural}", ${error.message}`,
{
variant: 'error',
},

View File

@ -1,10 +1,9 @@
import { useQuery } from '@apollo/client';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from './useFindOneObjectMetadataItem';
export const useFindOneObject = <
export const useFindOneObjectRecord = <
ObjectType extends { id: string } & Record<string, any>,
>({
objectNameSingular,

View File

@ -1,6 +1,7 @@
import { useRecoilValue } from 'recoil';
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { turnFiltersIntoWhereClauseV2 } from '@/ui/object/object-filter-dropdown/utils/turnFiltersIntoWhereClauseV2';
import { turnSortsIntoOrderByV2 } from '@/ui/object/object-sort-dropdown/utils/turnSortsIntoOrderByV2';
import { useRecordTableScopedStates } from '@/ui/object/record-table/hooks/internal/useRecordTableScopedStates';
@ -8,10 +9,9 @@ import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable';
import { getRecordOptimisticEffectDefinition } from '../graphql/optimistic-effect-definition/getRecordOptimisticEffectDefinition';
import { useFindManyObjects } from './useFindManyObjects';
import { useFindOneObjectMetadataItem } from './useFindOneObjectMetadataItem';
import { useFindManyObjectRecords } from './useFindManyObjectRecords';
export const useTableObjects = () => {
export const useObjectRecordTable = () => {
const { scopeId: objectNamePlural } = useRecordTable();
const { registerOptimisticEffect } = useOptimisticEffect();
@ -37,7 +37,7 @@ export const useTableObjects = () => {
foundObjectMetadataItem?.fields ?? [],
);
const { objects, loading, fetchMoreObjects } = useFindManyObjects({
const { objects, loading, fetchMoreObjects } = useFindManyObjectRecords({
objectNamePlural,
filter,
orderBy,

View File

@ -1,10 +1,9 @@
import { useMutation } from '@apollo/client';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { useFindOneObjectMetadataItem } from './useFindOneObjectMetadataItem';
export const useUpdateOneObject = ({
export const useUpdateOneObjectRecord = ({
objectNamePlural,
objectNameSingular,
}: ObjectMetadataItemIdentifier) => {

View File

@ -1,11 +1,9 @@
import { gql } from '@apollo/client';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from '@/object-metadata/utils/mapFieldMetadataToGraphQLQuery';
import { capitalize } from '~/utils/string/capitalize';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from './mapFieldMetadataToGraphQLQuery';
export const generateCreateOneObjectMutation = ({
objectMetadataItem,
}: {

View File

@ -1,9 +1,8 @@
import { gql } from '@apollo/client';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { capitalize } from '~/utils/string/capitalize';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
export const generateDeleteOneObjectMutation = ({
objectMetadataItem,
}: {

View File

@ -1,11 +1,9 @@
import { gql } from '@apollo/client';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from '@/object-metadata/utils/mapFieldMetadataToGraphQLQuery';
import { capitalize } from '~/utils/string/capitalize';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from './mapFieldMetadataToGraphQLQuery';
export const generateFindManyCustomObjectsQuery = ({
objectMetadataItem,
}: {

View File

@ -1,8 +1,7 @@
import { gql } from '@apollo/client';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from './mapFieldMetadataToGraphQLQuery';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from '@/object-metadata/utils/mapFieldMetadataToGraphQLQuery';
export const generateFindOneCustomObjectQuery = ({
objectMetadataItem,

View File

@ -1,11 +1,9 @@
import { gql } from '@apollo/client';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from '@/object-metadata/utils/mapFieldMetadataToGraphQLQuery';
import { capitalize } from '~/utils/string/capitalize';
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
import { mapFieldMetadataToGraphQLQuery } from './mapFieldMetadataToGraphQLQuery';
export const getUpdateOneObjectMutationGraphQLField = ({
objectNameSingular,
}: {

View File

@ -1,6 +1,6 @@
import styled from '@emotion/styled';
import { validateMetadataLabel } from '@/metadata/utils/validateMetadataLabel';
import { validateMetadataLabel } from '@/object-metadata/utils/validateMetadataLabel';
import { H2Title } from '@/ui/display/typography/components/H2Title';
import { IconPicker } from '@/ui/input/components/IconPicker';
import { TextArea } from '@/ui/input/components/TextArea';

View File

@ -3,8 +3,8 @@ import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { useRecoilState } from 'recoil';
import { useFindManyObjects } from '@/metadata/hooks/useFindManyObjects';
import { parseFieldType } from '@/metadata/utils/parseFieldType';
import { parseFieldType } from '@/object-metadata/utils/parseFieldType';
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
import { Tag } from '@/ui/display/tag/components/Tag';
import { useLazyLoadIcon } from '@/ui/input/hooks/useLazyLoadIcon';
import { FieldDisplay } from '@/ui/object/field/components/FieldDisplay';
@ -87,7 +87,7 @@ export const SettingsObjectFieldPreview = ({
const { Icon: ObjectIcon } = useLazyLoadIcon(objectIconKey ?? '');
const { Icon: FieldIcon } = useLazyLoadIcon(fieldIconKey ?? '');
const { objects } = useFindManyObjects({
const { objects } = useFindManyObjectRecords({
objectNamePlural,
skip: !fieldName,
});

View File

@ -1,6 +1,6 @@
import styled from '@emotion/styled';
import { validateMetadataLabel } from '@/metadata/utils/validateMetadataLabel';
import { validateMetadataLabel } from '@/object-metadata/utils/validateMetadataLabel';
import { H2Title } from '@/ui/display/typography/components/H2Title';
import { TextArea } from '@/ui/input/components/TextArea';
import { TextInput } from '@/ui/input/components/TextInput';

View File

@ -1,7 +1,7 @@
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { Checkbox } from '@/ui/input/components/Checkbox';
import { useLazyLoadIcon } from '@/ui/input/hooks/useLazyLoadIcon';
import { TableCell } from '@/ui/layout/table/components/TableCell';

View File

@ -1,4 +1,4 @@
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { H2Title } from '@/ui/display/typography/components/H2Title';
import { Section } from '@/ui/layout/section/components/Section';
import { Table } from '@/ui/layout/table/components/Table';

View File

@ -2,8 +2,8 @@ import { ReactNode } from 'react';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { useFindManyObjects } from '@/metadata/hooks/useFindManyObjects';
import { ObjectMetadataItem } from '@/metadata/types/ObjectMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
import { Tag } from '@/ui/display/tag/components/Tag';
import { useLazyLoadIcon } from '@/ui/input/hooks/useLazyLoadIcon';
import { TableCell } from '@/ui/layout/table/components/TableCell';
@ -36,7 +36,7 @@ export const SettingsObjectItemTableRow = ({
}: SettingsObjectItemTableRowProps) => {
const theme = useTheme();
const { objects } = useFindManyObjects({
const { objects } = useFindManyObjectRecords({
objectNamePlural: objectItem.namePlural,
});

View File

@ -2,9 +2,9 @@ import { useEffect } from 'react';
import { useInView } from 'react-intersection-observer';
import { useRecoilState, useRecoilValue } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/metadata/hooks/useFindOneObjectMetadataItem';
import { useTableObjects } from '@/metadata/hooks/useTableObjects';
import { isFetchingMoreObjectsFamilyState } from '@/metadata/states/isFetchingMoreObjectsFamilyState';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { useObjectRecordTable } from '@/object-record/hooks/useObjectRecordTable';
import { isFetchingMoreObjectsFamilyState } from '@/object-record/states/isFetchingMoreObjectsFamilyState';
import { isDefined } from '~/utils/isDefined';
import { RowIdContext } from '../contexts/RowIdContext';
@ -34,7 +34,7 @@ export const RecordTableBody = () => {
isFetchingRecordTableDataState,
);
const { fetchMoreObjects } = useTableObjects();
const { fetchMoreObjects } = useObjectRecordTable();
useEffect(() => {
if (lastTableRowIsVisible && isDefined(fetchMoreObjects)) {

View File

@ -2,8 +2,8 @@ import { useEffect } from 'react';
import { useSearchParams } from 'react-router-dom';
import { useRecoilCallback, useRecoilValue } from 'recoil';
import { useFindManyObjects } from '@/metadata/hooks/useFindManyObjects';
import { PaginatedObjectTypeResults } from '@/metadata/types/PaginatedObjectTypeResults';
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
import { PaginatedObjectTypeResults } from '@/object-record/types/PaginatedObjectTypeResults';
import { getSnapshotValue } from '@/ui/utilities/recoil-scope/utils/getSnapshotValue';
import { assertNotNull } from '~/utils/assert';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
@ -33,7 +33,7 @@ export const ViewBarEffect = () => {
const viewType = useRecoilValue(viewTypeState);
const viewObjectMetadataId = useRecoilValue(viewObjectMetadataIdState);
useFindManyObjects({
useFindManyObjectRecords({
objectNamePlural: 'viewsV2',
filter: {
type: { eq: viewType },
@ -64,7 +64,7 @@ export const ViewBarEffect = () => {
),
});
useFindManyObjects({
useFindManyObjectRecords({
skip: !currentViewId,
objectNamePlural: 'viewFieldsV2',
filter: { viewId: { eq: currentViewId } },
@ -105,7 +105,7 @@ export const ViewBarEffect = () => {
),
});
useFindManyObjects({
useFindManyObjectRecords({
skip: !currentViewId,
objectNamePlural: 'viewFiltersV2',
filter: { viewId: { eq: currentViewId } },
@ -159,7 +159,7 @@ export const ViewBarEffect = () => {
),
});
useFindManyObjects({
useFindManyObjectRecords({
skip: !currentViewId,
objectNamePlural: 'viewSortsV2',
filter: { viewId: { eq: currentViewId } },

View File

@ -1,7 +1,7 @@
import { useApolloClient } from '@apollo/client';
import { useRecoilCallback } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/metadata/hooks/useFindOneObjectMetadataItem';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { ViewField } from '@/views/types/ViewField';
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';

View File

@ -2,7 +2,7 @@ import { useApolloClient } from '@apollo/client';
import { produce } from 'immer';
import { useRecoilCallback } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/metadata/hooks/useFindOneObjectMetadataItem';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { Filter } from '@/ui/object/object-filter-dropdown/types/Filter';
import { savedViewFiltersScopedFamilyState } from '@/views/states/savedViewFiltersScopedFamilyState';
import { ViewFilter } from '@/views/types/ViewFilter';

View File

@ -2,7 +2,7 @@ import { useApolloClient } from '@apollo/client';
import { produce } from 'immer';
import { useRecoilCallback } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/metadata/hooks/useFindOneObjectMetadataItem';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { Sort } from '@/ui/object/object-sort-dropdown/types/Sort';
import { savedViewSortsScopedFamilyState } from '@/views/states/savedViewSortsScopedFamilyState';
import { ViewSort } from '@/views/types/ViewSort';

View File

@ -1,7 +1,7 @@
import { useApolloClient } from '@apollo/client';
import { useRecoilCallback } from 'recoil';
import { useFindOneObjectMetadataItem } from '@/metadata/hooks/useFindOneObjectMetadataItem';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { View } from '@/views/types/View';
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';