Draft: Introduce types provider abstraction layer
What does this MR do and why?
This MR aims to introduce an abstraction layer for fetching work item types. This is needed because we're preparing the app to switch from DB-based types to system-defined types which are hard-coded and eventually custom types which will live in the DB.
A namespace can have either only system-defined types, a mixture of system-defined types and custom types or only custom types. When the user changes a system-defined type we create a custom type that references back to the system-defined type. This is done so fetching a type by its base type gives you the correct custom or system-defined type for a given namespace.
WorkItems::TypesFramework::Provider aims to be the single source of truth for this abstraction layer, so we only need that logic in this place.
To help make the switch from DB-based types to system-defined types, this MR introduces the Provider class and replaces all references to WorkItems::Type.
References
Screenshots or screen recordings
| Before | After |
|---|---|
How to set up and validate locally
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.