mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Docs: Document backend package hierarchy model (#31930)
* Docs: Document backend package hierarchy model Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
parent
cbaf700d64
commit
6081c00119
16
contribute/architecture/backend/package-hierarchy.md
Normal file
16
contribute/architecture/backend/package-hierarchy.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Package hierarchy
|
||||||
|
|
||||||
|
The Go package hierarchy in Grafana should be organized logically (Ben Johnson's
|
||||||
|
[article](https://medium.com/@benbjohnson/standard-package-layout-7cdbc8391fc1) 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.
|
Loading…
Reference in New Issue
Block a user