diff --git a/docs/database.md b/database/database.md similarity index 100% rename from docs/database.md rename to database/database.md diff --git a/internal/serviceconfig/config.diagram.md b/internal/serviceconfig/config.diagram.md new file mode 100644 index 00000000..686bc0d2 --- /dev/null +++ b/internal/serviceconfig/config.diagram.md @@ -0,0 +1,90 @@ +# Config structures + +Package ServiceConfig contains all of the shared config structures that are used (and extended) by all of the services in the project. + +To view this diagram live in vscode use the https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid extension. + +You can also edit live with https://mermaid.live + +This diagram should be updated manually when there are changes to the database schema. + +To generate the diagram directly use the following command: + +```bash +docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/diagram.mmd -o /data/output.png -w 1024 -H 768 +``` + +## Diagram of config objects + +```mermaid +classDiagram +class BaseConfig["serviceconfig.BaseConfig"] { ++LoggerConfig ++ObservabilityConfig ++database.BaseConfig ++Pwd string ++BasePath string ++GetBasePath() ++GetLogger() ++LogConfig() +} +class ConfigProvider["serviceconfig.ConfigProvider"] { +<> ++database.ConfigProvider ++ObservabilityConfigProvider ++GetBasePath() ++GetLogger() ++LogConfig() +} + + class DBBaseConfig["database.BaseConfig"] { + +DBUser string + +DBSecret string + +DBHost string + +DBPort int + +DBName string + +DBNoSSL bool + +GetDBBaseURI() + +GetDBURI() + } + class DBConfigProvider["database.ConfigProvider"] { + <> + +GetDBBaseURI() + +GetDBURI() + +GetDBOpts() + } + + class ServerConfig["server.BaseConfig"] { + +serviceconfig.BaseConfig + +Validator + +SetValidator() + +GetValidator() + } + + class ServiceConfig["service.BaseConfig"] { + +server.BaseConfig + +RegisterHandlersFunc + +OpenAPI + +Router + } + + class RunnerConfig["runner.BaseConfig"] { + +server.BaseConfig + +aws.AWSConfig + +ControllerFunc + +QueueURL + } + + class AWSConfig["aws.AWSConfig"] { + +AWSClientID string + +AWSSecretKey string + } + + ConfigProvider <|.. BaseConfig + DBConfigProvider <|.. DBBaseConfig + BaseConfig *-- DBBaseConfig + ServerConfig --|> BaseConfig + ServiceConfig --|> ServerConfig + RunnerConfig --|> ServerConfig + RunnerConfig *-- AWSConfig +```