Content Repository API
We need a solid foundation for all kinds of interactions with the TYPO3 Content Repository in order to streamline client/server communication and provide open endpoints for 3rd parties.
Some measures towards a stable API I could imagine:
1. Encapsulate NodeDataRepository calls into a public service (e.g. "NodeRepository")
2. Merge functions with similar functionality
If you look at the list of "lookup" interactions below you can see that we do similar jobs multiple times. I would suggest following changes:
- Replace Workspace arguments by ContextInterface arguments (and provide some easy way to retrieve a context from a workspace if we see the need for it). This will also render arguments like "$includeRemovedNodes" obsolete.
- The service should only return NULL, NodeInterface or QueryResultInterface<NodeInterface> if possible (Until we rewrote the queries to use DQL we could create a NodeQueryResult that implements a subset of the QueryResultInterface)
3. Extend the Neos "Node REST API" so that it provides common operations (using the NodeRepository)
4. Replace existing client/server interactions (ExtDirect, possibly some Backend\*Controller) by interactions with the REST API