Files
HanaToolbox/Services/ServiceFactory.cs
2026-03-02 20:53:28 +01:00

75 lines
2.8 KiB
C#

using HanaToolbox.Config;
using HanaToolbox.Logging;
using HanaToolbox.Scheduling;
using HanaToolbox.Services.Interfaces;
namespace HanaToolbox.Services;
/// <summary>
/// Simple factory for wiring service dependencies without a DI container.
/// AOT-safe — no reflection, no generic activators.
/// </summary>
public static class ServiceFactory
{
public static ProcessRunner CreateRunner(AppLogger log) => new(log);
public static SuUserSwitcher CreateSwitcher(AppLogger log) => new(CreateRunner(log));
public static HdbClientLocator CreateLocator(AppLogger log) => new(CreateRunner(log));
public static NtfyNotificationService CreateNtfy(AppLogger log, NtfyConfig ntfy) =>
new(ntfy, log);
public static FileMonitorStateService CreateState(AppLogger log) => new(log);
public static BackupService CreateBackupService(AppLogger log)
{
var config = ConfigService.Load();
var runner = CreateRunner(log);
var switcher = new SuUserSwitcher(runner);
var locator = new HdbClientLocator(runner);
var ntfy = CreateNtfy(log, config.Ntfy);
return new BackupService(switcher, locator, ntfy, log);
}
public static AuroraService CreateAuroraService(AppLogger log)
{
var config = ConfigService.Load();
var runner = CreateRunner(log);
var switcher = new SuUserSwitcher(runner);
var locator = new HdbClientLocator(runner);
var ntfy = CreateNtfy(log, config.Ntfy);
return new AuroraService(switcher, locator, ntfy, log);
}
public static MonitorService CreateMonitorService(AppLogger log)
{
var config = ConfigService.Load();
var runner = CreateRunner(log);
var switcher = new SuUserSwitcher(runner);
var locator = new HdbClientLocator(runner);
var ntfy = CreateNtfy(log, config.Ntfy);
var state = CreateState(log);
return new MonitorService(runner, switcher, locator, ntfy, state, log);
}
public static CronOrchestrator CreateCronOrchestrator(AppLogger log)
{
var config = ConfigService.Load();
var runner = CreateRunner(log);
var switcher = new SuUserSwitcher(runner);
var locator = new HdbClientLocator(runner);
var ntfy = CreateNtfy(log, config.Ntfy);
var state = CreateState(log);
return new CronOrchestrator(
monitor: new MonitorService(runner, switcher, locator, ntfy, state, log),
backup: new BackupService(switcher, locator, ntfy, log),
cleaner: new CleanerService(log),
aurora: new AuroraService(switcher, locator, ntfy, log),
firewall: new FirewallService(runner, log),
stateService: state,
logger: log);
}
}