| WMDE-leszek changed the title from "Use dispatching/multiplexing services in Client" to "Use dispatching services in Client". WMDE-leszek raised the priority of this task from "Normal" to "High". WMDE-leszek edited the task description. (Show Details) |
EDIT DETAILS
Dispatching (a.k.a.) multiplexing services should be used in repo-agnostic services instead of local-repo-specific ones that have been used so far.This is a general ticket for using servics allowing to access entities from multiple repositories in Wikibase client. Tickets for more specific implementations related tasks should be created as subtasks.
General structure/notes:
* ClientStore implementation is not changed,
* existing ClientStore implementation, ie. DirectSqlStore should be using dispatching versions of services instead of single-repo ones it uses now
* factory of services should be created for providing list of service instances for creating dispatching services to DirectSqlStore.
* This factory would have a public interface partly reminding the one of ServiceContainer, ie. it would have a generic method getServiceMap (name is subject to change) returning a map in form [ repoName => service ] of services configured for particular repository. It could also have convenience getters for particular services.
* the factory class would have a required configuration of foreign repositories (what repos are configured, what are DB names, URLs etc)
* there should be class extending ServiceContainer that will be returning all services for a single repository. This container will use wiring file instantiating actual service classes
* ServiceMapFactory would use a RepositoryServiceContainer for each repo to generate a service map
Implementation notes:
* in the long run WikibaseClient should also become a ServiceContainer but this is something which out of scope of this task
General structure/notes:
* ClientStore implementation is not changed,
* existing ClientStore implementation, ie. DirectSqlStore should be using dispatching versions of services instead of single-repo ones it uses now
* factory of services should be created for providing list of service instances for creating dispatching services to DirectSqlStore.
* This factory would have a public interface partly reminding the one of ServiceContainer, ie. it would have a generic method getServiceMap (name is subject to change) returning a map in form [ repoName => service ] of services configured for particular repository. It could also have convenience getters for particular services.
* the factory class would have a required configuration of foreign repositories (what repos are configured, what are DB names, URLs etc)
* there should be class extending ServiceContainer that will be returning all services for a single repository. This container will use wiring file instantiating actual service classes
* ServiceMapFactory would use a RepositoryServiceContainer for each repo to generate a service map
Implementation notes:
...
* the ability to load e.g. labels for entities on another repo will be needed by repo code, not just client code. We will have to re-consider the relationship between repo and client once more.* in the long run WikibaseClient should also become a ServiceContainer but this is something which out of scope of this task
TASK DETAIL
EMAIL PREFERENCES
To: WMDE-leszek
Cc: gerritbot, daniel, WMDE-leszek, Aklapper, Ramalepe, Liugev6, Lewizho99, Maathavan, D3r1ck01, Izno, Wikidata-bugs, aude, Mbch331
Cc: gerritbot, daniel, WMDE-leszek, Aklapper, Ramalepe, Liugev6, Lewizho99, Maathavan, D3r1ck01, Izno, Wikidata-bugs, aude, Mbch331
_______________________________________________ Wikidata-bugs mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs
