# pakanor/dbautomatization architecture

> Architecture diagram of the GitHub repository pakanor/dbautomatization, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pakanor/dbautomatization
- Repository: https://github.com/pakanor/dbautomatization

## Overview

DbAutomatization is a Linux sysops CLI for discovering systemd and Docker databases, configuring them, and operating them through interactive menus. The principal flow scans/registers engines, then lets an operator manage service lifecycle, open a database CLI, create or restore backups, and schedule backups with retention. Template configuration and process execution underpin these domain stages. README documents major integrations; arrows are limited to relationships shown in excerpts, the source index, or README, so unsampled components may have no asserted call edge.

Main entry points: [`DbAutomatization.Cli/UI/DatabaseAppService.cs`](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/DatabaseAppService.cs) (Database operations), [`DbAutomatization.Infrastructure/Linux/ProcessExecutor.cs`](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/ProcessExecutor.cs) (Process execution), [`DbAutomatization.Cli/UI/DatabaseWizardService.cs`](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/DatabaseWizardService.cs) (Registration wizard), [`DbAutomatization.Core/Services/BackupService.cs`](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Services/BackupService.cs) (Backup execution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI workflows"]
  node_program["CLI startup<br/>[Program.cs]"]
  node_menu["Console menu<br/>[ConsoleMenu.cs]"]
  node_app["Database operations"]
  node_wizard["Registration wizard"]
end

subgraph group_domain["Configuration and backup"]
  node_config["Engine configuration<br/>[DatabaseConfig.cs]"]
  node_templates["Engine templates<br/>[EngineTemplates.cs]"]
  node_backup["Backup execution<br/>[BackupService.cs]"]
end

subgraph group_linux["Linux integrations"]
  node_scanner["Systemd discovery<br/>[SystemdScanner.cs]"]
  node_docker_discovery["Docker discovery"]
  node_repository[("Configuration repository")]
  node_service_manager["Lifecycle and CLI"]
  node_restore["Restore execution<br/>[RestoreService.cs]"]
  node_retention["Backup retention"]
  node_scheduler["Backup scheduling<br/>[BackupScheduler.cs]"]
  node_editor["Config editor"]
  node_process["Process execution<br/>[ProcessExecutor.cs]"]
end

node_operator(("Operator"))
node_host["Linux host"]
node_docker["Docker engine"]
node_database[("Database engine")]
node_backup_files["Backup files"]

node_operator -->|"launches"| node_program
node_program -->|"starts"| node_menu
node_menu -->|"dispatches"| node_app
node_app -->|"scans"| node_scanner
node_app -->|"manages services"| node_service_manager
node_app -->|"requests backup"| node_backup
node_app -->|"requests restore"| node_restore
node_app -->|"manages schedule"| node_scheduler
node_app -->|"opens wizard"| node_wizard
node_wizard -->|"discovers containers"| node_docker_discovery
node_wizard -->|"builds config"| node_templates
node_wizard -->|"registers config"| node_repository
node_wizard -->|"creates"| node_config
node_scanner -.->|"detects units"| node_host
node_docker_discovery -->|"executes commands"| node_process
node_docker_discovery -.->|"queries containers"| node_docker
node_service_manager -->|"reads config"| node_repository
node_service_manager -->|"executes commands"| node_process
node_service_manager -.->|"controls or opens"| node_database
node_service_manager -.->|"controls containers"| node_docker
node_backup -->|"reads config"| node_repository
node_backup -->|"runs dump"| node_process
node_backup -->|"cleans old files"| node_retention
node_backup -->|"writes backup"| node_backup_files
node_restore -->|"reads config"| node_repository
node_restore -->|"runs restore"| node_process
node_restore -->|"reads backup"| node_backup_files
node_restore -.->|"restores into"| node_database
node_editor -->|"launches editor"| node_process
node_editor -->|"reloads config"| node_repository
node_process -.->|"runs processes"| node_host

click node_program "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/Program.cs"
click node_menu "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/ConsoleMenu.cs"
click node_app "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/DatabaseAppService.cs"
click node_wizard "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/DatabaseWizardService.cs"
click node_scanner "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/SystemdScanner.cs"
click node_docker_discovery "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/DockerContainerDiscoveryService.cs"
click node_config "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Models/DatabaseConfig.cs"
click node_templates "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Models/EngineTemplates.cs"
click node_repository "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/DatabaseConfigRepository.cs"
click node_service_manager "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/SystemdServiceManager.cs"
click node_backup "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Services/BackupService.cs"
click node_restore "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/RestoreService.cs"
click node_retention "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/BackupRetentionManager.cs"
click node_scheduler "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/BackupScheduler.cs"
click node_editor "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/ExternalEditorService.cs"
click node_process "https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/ProcessExecutor.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_program,node_menu,node_app,node_wizard toneBlue
class node_config,node_templates,node_backup,node_database toneAmber
class node_scanner,node_docker_discovery,node_repository,node_service_manager,node_restore,node_retention,node_scheduler,node_editor,node_process toneMint
class node_operator,node_host,node_docker,node_backup_files toneIndigo
```

## Components

### CLI workflows

- [CLI startup](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/Program.cs): `DbAutomatization.Cli/Program.cs`
- [Console menu](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/ConsoleMenu.cs): `DbAutomatization.Cli/UI/ConsoleMenu.cs`
- [Database operations](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/DatabaseAppService.cs): `DbAutomatization.Cli/UI/DatabaseAppService.cs`
- [Registration wizard](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Cli/UI/DatabaseWizardService.cs): `DbAutomatization.Cli/UI/DatabaseWizardService.cs`

### Configuration and backup

- [Engine configuration](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Models/DatabaseConfig.cs): `DbAutomatization.Core/Models/DatabaseConfig.cs`
- [Engine templates](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Models/EngineTemplates.cs): `DbAutomatization.Core/Models/EngineTemplates.cs`
- [Backup execution](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Core/Services/BackupService.cs): `DbAutomatization.Core/Services/BackupService.cs`

### Linux integrations

- [Systemd discovery](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/SystemdScanner.cs): `DbAutomatization.Infrastructure/Linux/SystemdScanner.cs`
- [Docker discovery](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/DockerContainerDiscoveryService.cs): `DbAutomatization.Infrastructure/Linux/DockerContainerDiscoveryService.cs`
- [Configuration repository](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/DatabaseConfigRepository.cs): `DbAutomatization.Infrastructure/Linux/DatabaseConfigRepository.cs`
- [Lifecycle and CLI](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/SystemdServiceManager.cs): `DbAutomatization.Infrastructure/Linux/SystemdServiceManager.cs`
- [Restore execution](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/RestoreService.cs): `DbAutomatization.Infrastructure/Linux/RestoreService.cs`
- [Backup retention](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/BackupRetentionManager.cs): `DbAutomatization.Infrastructure/Linux/BackupRetentionManager.cs`
- [Backup scheduling](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/BackupScheduler.cs): `DbAutomatization.Infrastructure/Linux/BackupScheduler.cs`
- [Config editor](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/ExternalEditorService.cs): `DbAutomatization.Infrastructure/Linux/ExternalEditorService.cs`
- [Process execution](https://github.com/pakanor/dbautomatization/blob/main/DbAutomatization.Infrastructure/Linux/ProcessExecutor.cs): `DbAutomatization.Infrastructure/Linux/ProcessExecutor.cs`

### Other components

- **Operator**
- **Linux host**
- **Docker engine**
- **Database engine**
- **Backup files**

## Connections

- Operator → CLI startup: launches
- CLI startup → Console menu: starts (evidence: `DbAutomatization.Cli/Program.cs`)
- Console menu → Database operations: dispatches (evidence: `DbAutomatization.Cli/UI/ConsoleMenu.cs`)
- Database operations → Systemd discovery: scans (evidence: `DbAutomatization.Cli/UI/DatabaseAppService.cs`)
- Database operations → Lifecycle and CLI: manages services (evidence: `DbAutomatization.Cli/UI/DatabaseAppService.cs`)
- Database operations → Backup execution: requests backup (evidence: `DbAutomatization.Cli/UI/DatabaseAppService.cs`)
- Database operations → Restore execution: requests restore (evidence: `DbAutomatization.Cli/UI/DatabaseAppService.cs`)
- Database operations → Backup scheduling: manages schedule (evidence: `DbAutomatization.Cli/UI/DatabaseAppService.cs`)
- Database operations → Registration wizard: opens wizard (evidence: `DbAutomatization.Cli/UI/DatabaseAppService.cs`)
- Registration wizard → Docker discovery: discovers containers (evidence: `DbAutomatization.Cli/UI/DatabaseWizardService.cs`)
- Registration wizard → Engine templates: builds config (evidence: `DbAutomatization.Cli/UI/DatabaseWizardService.cs`)
- Registration wizard → Configuration repository: registers config (evidence: `DbAutomatization.Cli/UI/DatabaseWizardService.cs`)
- Registration wizard → Engine configuration: creates (evidence: `DbAutomatization.Cli/UI/DatabaseWizardService.cs`)
- Systemd discovery → Linux host: detects units
- Docker discovery → Process execution: executes commands (evidence: `DbAutomatization.Infrastructure/Linux/DockerContainerDiscoveryService.cs`)
- Docker discovery → Docker engine: queries containers
- Lifecycle and CLI → Configuration repository: reads config (evidence: `DbAutomatization.Infrastructure/Linux/SystemdServiceManager.cs`)
- Lifecycle and CLI → Process execution: executes commands (evidence: `DbAutomatization.Infrastructure/Linux/SystemdServiceManager.cs`)
- Lifecycle and CLI → Database engine: controls or opens
- Lifecycle and CLI → Docker engine: controls containers
- Backup execution → Configuration repository: reads config (evidence: `DbAutomatization.Core/Services/BackupService.cs`)
- Backup execution → Process execution: runs dump (evidence: `DbAutomatization.Core/Services/BackupService.cs`)
- Backup execution → Backup retention: cleans old files (evidence: `DbAutomatization.Core/Services/BackupService.cs`)
- Backup execution → Backup files: writes backup (evidence: `DbAutomatization.Core/Services/BackupService.cs`)
- Restore execution → Configuration repository: reads config (evidence: `DbAutomatization.Infrastructure/Linux/RestoreService.cs`)
- Restore execution → Process execution: runs restore (evidence: `DbAutomatization.Infrastructure/Linux/RestoreService.cs`)
- Restore execution → Backup files: reads backup (evidence: `DbAutomatization.Infrastructure/Linux/RestoreService.cs`)
- Restore execution → Database engine: restores into
- Config editor → Process execution: launches editor (evidence: `DbAutomatization.Infrastructure/Linux/ExternalEditorService.cs`)
- Config editor → Configuration repository: reloads config (evidence: `DbAutomatization.Infrastructure/Linux/ExternalEditorService.cs`)
- Process execution → Linux host: runs processes
