using MoonlightServers.Daemon.Models; using MoonlightServers.Daemon.ServerSystem.Abstractions; namespace MoonlightServers.Daemon.ServerSystem.Implementations.Local; public class LocalRuntimeStorageService : IRuntimeStorageService { private const string HostPathTemplate = "./mldaemon/runtime/{0}"; public Task FindAsync(string id) { var path = string.Format(HostPathTemplate, id); if (!Directory.Exists(path)) return Task.FromResult(null); return Task.FromResult(new LocalRuntimeStorage(path)); } public Task CreateAsync(string id, RuntimeConfiguration configuration) { var path = string.Format(HostPathTemplate, id); Directory.CreateDirectory(path); return Task.FromResult(new LocalRuntimeStorage(path)); } public Task UpdateAsync(IRuntimeStorage runtimeStorage, RuntimeConfiguration configuration) => Task.CompletedTask; public Task DeleteAsync(IRuntimeStorage runtimeStorage) { if (runtimeStorage is not LocalRuntimeStorage localRuntimeStorage) { throw new ArgumentException( $"You cannot delete runtime storages which haven't been created by {nameof(LocalRuntimeStorageService)}" ); } if(Directory.Exists(localRuntimeStorage.HostPath)) Directory.Delete(localRuntimeStorage.HostPath, true); return Task.CompletedTask; } }