Meh, each of your complaints is solved by understanding GraphQL better.
If the main issue is you have to learn something complex, sure that’s probably a little fair, but it’s really easy to get GraphQL to do what you want once you’ve gotten over that initial learning curve.
Specifically, queries and mutations can literally do whatever you want them to.