75 lines
2.8 KiB
C#
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);
|
|
}
|
|
}
|