Подскажите, как правильно задать ответ на мутацию в gql? Суть - есть некий объект User
type User {
address: Address
status: Status
inventory: Inventory
}
Все поля - комплексные типы, например в каждом есть поля x
и y
. Вложенность может быть уровней на 10-15, полей в жизни тоже не 3, а 33.
Есть мутация, которая изменяет например поля x
и y
из Address
и поле x.x
из Status
.
type Mutation {
updateAddress(...): ????
}
Как правильно написать тип ответа чтоб для фронтенда было очевидно что именно поменялось в объекте?
В плане я понимаю что можно просто вернуть объект и фронт может сам запросить что угодно, но запрашивать сразу 100500 полей чтоб понять что там поменялось им самим нафиг не надо. Хз, например указывать типом ответа интерфейс с нужным набором полей и потом указывать что User его имплементит? Или как-то вручную формировать ответ, но при этом на клиенте может влет сломаться кеш из-за несоответствия типов.
С интерфейсом вроде красиво, но плодить по интерфейсу на каждую мутацию и потом дружно пихать их в implements это как-то хз
В чатгпт пока не ходил, но в доке и best practices явного ответа не нашёл
Апд; потыкал чатгпт, он традиционно несёт чушь с передачей списка изменений в ответе прям текстовым полем, и на призывы что мутация блин меняет всегда один и тот же сабсет он не реагирует.
Пока самым логически корректным выглядит вариант с интерфейсами типа
Mutation updateAddress(...): UserWithAddressAndStatus
type User implements UserWithAddressAndStatus {
...
}
Из интерфейса сходу видно что именно поменялось, ну и понятен родитель. Но количество таких интерфейсов немного пугает. Да и перечислять в имени интерфейса изменения как-то больно