Каковы лучшие практики для мутаций в GraphQL? (Реализация.NET)
В настоящее время я изучаю graphql, и я не уверен, правильно ли я понимаю, как должны работать мутации, особенно в сочетании с подписками.
У меня есть страница с информацией о клиенте, которая включает описание и список программных продуктов, которые он приобрел у нашей компании. В интерфейсе есть одна кнопка редактирования описания, кнопка "плюс" для добавления нового программного продукта в список клиентов и кнопки "минус" для каждого продукта, позволяющие удалить их.
В настоящее время я добавил мутацию, которая принимает идентификатор клиента и строку (newDescription) в качестве параметров и обновляет описание клиента. Это правильно, или я должен иметь идентификатор и ClientInputType (содержащий описание поля) и передавать их в качестве параметров? Что еще более важно, если я использую ClientInputType, и он содержит описание и список программных продуктов, есть ли способ, которым я могу обновлять только одно поле за раз (чтобы обновить клиента, используя ту же самую мутацию, но изменить только обязательные поля в зависимости от того, какая кнопка была нажата в интерфейсе)?
public Mutation(IClientRepository clientRepository)
{
this.FieldAsync<ClientType>(
"updateClient",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<IntGraphType>> { Name = "id" },
new QueryArgument<StringGraphType> { Name = "newDescription" }
),
resolve: async ctx =>
{...}
}
Другими словами, могу ли я каким-либо образом сообщить graphql, что я хочу обновить только одно поле в ClientInputType и что оно должно игнорировать остальные? Что должна вернуть мутация? Я сейчас возвращаю обновленного клиента.