refactor: more self-contained queryservice
This PR moves some of the processing from queryServiceReader
into queryService
such that other readers can call queryService
without having to do a lot of processing. This simplifies our code quite a bit. Instead a cypher and convertedQueries argument, you now provide a single Query from which stuff is inferred.
In addition, this PR updates the signature of queryService (and the count one) to have a deterministic type: we know whether the return type is going to be a string (key) or object (full result) based on provided returnCacheKey