refactor: split AbstractConnectionResolver::get_nodes() and get_edges() into prepare_*() methods
#3121
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this implement/fix? Explain your changes.
This PR refactors the AbstractConnectionResolver in the following ways:
::get_nodes()and::get_edges()now instantiateAbstractConnectionResolver::$nodesandAbstractConnectionResolver::$edgesonly once.::get_nodes()into the new::prepare_nodes()method.::get_edges()into the new::prepare_edges()method. The::prepare_edges()method itself calls the new::prepare_edge()method, and wraps it in the preexistinggraphql_connection_edgefilter.Together, these changes improve the DX by reducing the amount of boilerplate needed when extending the
AbstractConnectionResolverclass, and improving lifecycle consistency, with potential performance benefits for child classes with complex node/edge generation logic.There are no breaking changes in this PR.
Important
This PR requires #3120 which should be merged first.
The relevant diff for this PR can be seen at b266d3e
Does this close any currently open issues?
Part of #2749
Any relevant logs, error output, GraphiQL screenshots, etc?
Any other comments?
AbstractConnectionResolver::$nodesand::$edgesproperties still manually instantiated andgraphql_connection_nodesandgraphql_connection_edgesfilters appiled inAbstractConnectionResolver::get_connection(), to maintain b/c compatibility with classes that are currently overloading::get_edges()and::get_nodes()directly.Where has this been tested?
Operating System: Ubuntu 20.04 (wsl2 + devilbox + php 8.1.15)
WordPress Version: 6.5.2