Mutations::ResolvesIssuable should use finders
Mutations::ResolvesIssuable re-uses resolvers, but resolvers do not compose well.
We should move the resolution logic to a graphql aware finder (so that some things can be batch loaded) and then call the finders directly to avoid the mess of instantiating a whole resolver outside of a query tree.
The rationale for this is that resolvers are not meant to be composable and re-usable. They are both unergonomic (needing specific parameters to instantiate) and error prone to use. This aims at making code simpler, more consistent and less verbose.
As an example consider changes that move logic from #resolve
into #ready?
- these changes can break re-use if the re-using position fails to call #ready?
. The API and calling conventions of resolvers are designed around the GraphQL framework, and are not suitable as composable abstractions.
Separately, we probably want to forbid instantiating resolvers manually in our production code - it should be considered a cop violation.