mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Docs: Document backend package hierarchy model Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
878 B
878 B
Package hierarchy
The Go package hierarchy in Grafana should be organized logically (Ben Johnson's article served as inspiration), according to the following principles:
- Domain types and interfaces should be in "root" packages (not necessarily at the very top, of the hierarchy, but logical roots)
- Sub-packages should depend on roots - sub-packages here typically contain implementations, for example of services
Practical example
The pkg/plugins package contains plugin domain types, for example DataPlugin, and also interfaces
such as RequestHandler. Then you have the pkg/plugins/managers subpackage, which contains concrete implementations
such as the service PluginManager. The subpackage pkg/plugins/backendplugin/coreplugin contains plugins.DataPlugin
implementations.