@ -24,26 +24,25 @@ export const useCreateOneObjectRecord = <T>({
|
||||
// TODO: type this with a minimal type at least with Record<string, any>
|
||||
const [mutate] = useMutation(createOneMutation);
|
||||
|
||||
const createOneObject =
|
||||
objectNameSingular && foundObjectMetadataItem
|
||||
? async (input: Record<string, any>) => {
|
||||
const createdObject = await mutate({
|
||||
variables: {
|
||||
input: { ...input, id: v4() },
|
||||
},
|
||||
});
|
||||
const createOneObject = async (input: Record<string, any>) => {
|
||||
if (!foundObjectMetadataItem || !objectNameSingular) {
|
||||
return null;
|
||||
}
|
||||
|
||||
triggerOptimisticEffects(
|
||||
`${capitalize(foundObjectMetadataItem.nameSingular)}Edge`,
|
||||
createdObject.data[
|
||||
`create${capitalize(foundObjectMetadataItem.nameSingular)}`
|
||||
],
|
||||
);
|
||||
return createdObject.data[
|
||||
`create${capitalize(objectNameSingular)}`
|
||||
] as T;
|
||||
}
|
||||
: undefined;
|
||||
const createdObject = await mutate({
|
||||
variables: {
|
||||
input: { ...input, id: v4() },
|
||||
},
|
||||
});
|
||||
|
||||
triggerOptimisticEffects(
|
||||
`${capitalize(foundObjectMetadataItem.nameSingular)}Edge`,
|
||||
createdObject.data[
|
||||
`create${capitalize(foundObjectMetadataItem.nameSingular)}`
|
||||
],
|
||||
);
|
||||
return createdObject.data[`create${capitalize(objectNameSingular)}`] as T;
|
||||
};
|
||||
|
||||
return {
|
||||
createOneObject,
|
||||
|
||||
@ -23,20 +23,18 @@ export const useDeleteOneObjectRecord = <T>({
|
||||
|
||||
const deleteOneObject = useCallback(
|
||||
async (idToDelete: string) => {
|
||||
if (objectNameSingular && foundObjectMetadataItem) {
|
||||
const deletedObject = await mutate({
|
||||
variables: {
|
||||
idToDelete,
|
||||
},
|
||||
refetchQueries: [getOperationName(findManyQuery) ?? ''],
|
||||
});
|
||||
|
||||
return deletedObject.data[
|
||||
`create${capitalize(objectNameSingular)}`
|
||||
] as T;
|
||||
if (!foundObjectMetadataItem || !objectNameSingular) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
const deletedObject = await mutate({
|
||||
variables: {
|
||||
idToDelete,
|
||||
},
|
||||
refetchQueries: [getOperationName(findManyQuery) ?? ''],
|
||||
});
|
||||
|
||||
return deletedObject.data[`create${capitalize(objectNameSingular)}`] as T;
|
||||
},
|
||||
[foundObjectMetadataItem, mutate, objectNameSingular, findManyQuery],
|
||||
);
|
||||
|
||||
@ -48,20 +48,17 @@ export const useFindManyObjectRecords = <
|
||||
isFetchingMoreObjectsFamilyState(objectNamePlural),
|
||||
);
|
||||
|
||||
const {
|
||||
objectMetadataItem: foundObjectMetadataItem,
|
||||
objectNotFoundInMetadata,
|
||||
findManyQuery,
|
||||
} = useObjectMetadataItem({
|
||||
objectNamePlural,
|
||||
});
|
||||
const { objectMetadataItem, objectNotFoundInMetadata, findManyQuery } =
|
||||
useObjectMetadataItem({
|
||||
objectNamePlural,
|
||||
});
|
||||
|
||||
const { enqueueSnackBar } = useSnackBar();
|
||||
|
||||
const { data, loading, error, fetchMore } = useQuery<
|
||||
PaginatedObjectType<ObjectType>
|
||||
>(findManyQuery, {
|
||||
skip: skip || !foundObjectMetadataItem || !objectNamePlural,
|
||||
skip: skip || !objectMetadataItem || !objectNamePlural,
|
||||
variables: {
|
||||
filter: filter ?? {},
|
||||
orderBy: orderBy ?? {},
|
||||
@ -130,7 +127,7 @@ export const useFindManyObjectRecords = <
|
||||
return Object.assign({}, prev, {
|
||||
[objectNamePlural]: {
|
||||
__typename: `${capitalize(
|
||||
foundObjectMetadataItem?.nameSingular ?? '',
|
||||
objectMetadataItem?.nameSingular ?? '',
|
||||
)}Connection`,
|
||||
edges: newEdges,
|
||||
pageInfo: fetchMoreResult?.[objectNamePlural].pageInfo,
|
||||
@ -156,7 +153,7 @@ export const useFindManyObjectRecords = <
|
||||
fetchMore,
|
||||
filter,
|
||||
orderBy,
|
||||
foundObjectMetadataItem,
|
||||
objectMetadataItem,
|
||||
hasNextPage,
|
||||
setIsFetchingMoreObjects,
|
||||
enqueueSnackBar,
|
||||
@ -174,6 +171,7 @@ export const useFindManyObjectRecords = <
|
||||
);
|
||||
|
||||
return {
|
||||
objectMetadataItem,
|
||||
objects,
|
||||
loading,
|
||||
error,
|
||||
|
||||
@ -18,29 +18,28 @@ export const useUpdateOneObjectRecord = <T>({
|
||||
// TODO: type this with a minimal type at least with Record<string, any>
|
||||
const [mutate] = useMutation(updateOneMutation);
|
||||
|
||||
const updateOneObject =
|
||||
objectNameSingular && foundObjectMetadataItem
|
||||
? async ({
|
||||
idToUpdate,
|
||||
input,
|
||||
}: {
|
||||
idToUpdate: string;
|
||||
input: Record<string, any>;
|
||||
}) => {
|
||||
const updatedObject = await mutate({
|
||||
variables: {
|
||||
idToUpdate: idToUpdate,
|
||||
input: {
|
||||
...input,
|
||||
},
|
||||
},
|
||||
});
|
||||
const updateOneObject = async ({
|
||||
idToUpdate,
|
||||
input,
|
||||
}: {
|
||||
idToUpdate: string;
|
||||
input: Record<string, any>;
|
||||
}) => {
|
||||
if (!foundObjectMetadataItem || !objectNameSingular) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return updatedObject.data[
|
||||
`update${capitalize(objectNameSingular)}`
|
||||
] as T;
|
||||
}
|
||||
: undefined;
|
||||
const updatedObject = await mutate({
|
||||
variables: {
|
||||
idToUpdate: idToUpdate,
|
||||
input: {
|
||||
...input,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return updatedObject.data[`update${capitalize(objectNameSingular)}`] as T;
|
||||
};
|
||||
|
||||
return {
|
||||
updateOneObject,
|
||||
|
||||
Reference in New Issue
Block a user