38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
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';
|
|
|
|
export const getUpdateOneObjectMutationGraphQLField = ({
|
|
objectNameSingular,
|
|
}: {
|
|
objectNameSingular: string;
|
|
}) => {
|
|
return `update${capitalize(objectNameSingular)}`;
|
|
};
|
|
|
|
export const generateUpdateOneObjectMutation = ({
|
|
objectMetadataItem,
|
|
}: {
|
|
objectMetadataItem: ObjectMetadataItem;
|
|
}) => {
|
|
const capitalizedObjectName = capitalize(objectMetadataItem.nameSingular);
|
|
|
|
const graphQLFieldForUpdateOneObjectMutation =
|
|
getUpdateOneObjectMutationGraphQLField({
|
|
objectNameSingular: objectMetadataItem.nameSingular,
|
|
});
|
|
|
|
return gql`
|
|
mutation UpdateOne${capitalizedObjectName}($idToUpdate: ID!, $input: ${capitalizedObjectName}UpdateInput!) {
|
|
${graphQLFieldForUpdateOneObjectMutation}(id: $idToUpdate, data: $input) {
|
|
id
|
|
${objectMetadataItem.fields
|
|
.map(mapFieldMetadataToGraphQLQuery)
|
|
.join('\n')}
|
|
}
|
|
}
|
|
`;
|
|
};
|