first commit
This commit is contained in:
74
Services/ServiceFactory.cs
Normal file
74
Services/ServiceFactory.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user