Delete command
This commit is contained in:
35
src/Providers/FileTime.Providers.Local/LocalItemDeleter.cs
Normal file
35
src/Providers/FileTime.Providers.Local/LocalItemDeleter.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using FileTime.Core.ContentAccess;
|
||||
using FileTime.Core.Models;
|
||||
|
||||
namespace FileTime.Providers.Local;
|
||||
|
||||
public class LocalItemDeleter : IItemDeleter<ILocalContentProvider>
|
||||
{
|
||||
public Task DeleteAsync(ILocalContentProvider contentProvider, FullName fullName)
|
||||
{
|
||||
var nativePath = contentProvider.GetNativePath(fullName).Path;
|
||||
|
||||
if (File.Exists(nativePath))
|
||||
{
|
||||
File.Delete(nativePath);
|
||||
}
|
||||
else if (Directory.Exists(nativePath))
|
||||
{
|
||||
Directory.Delete(nativePath, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new FileNotFoundException(nativePath);
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(IContentProvider contentProvider, FullName fullName)
|
||||
{
|
||||
var localContentProvider = contentProvider as ILocalContentProvider;
|
||||
if (localContentProvider is null) throw new ArgumentException("Content provider is not a local content provider", nameof(contentProvider));
|
||||
|
||||
await DeleteAsync(localContentProvider, fullName);
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,8 @@ public static class Startup
|
||||
serviceCollection.TryAddSingleton<IContentProvider>(sp => sp.GetRequiredService<ILocalContentProvider>());
|
||||
serviceCollection.TryAddSingleton<IItemCreator<ILocalContentProvider>, LocalItemCreator>();
|
||||
serviceCollection.TryAddSingleton<IItemCreator<LocalContentProvider>>(sp => sp.GetRequiredService<IItemCreator<ILocalContentProvider>>());
|
||||
serviceCollection.TryAddSingleton<IItemDeleter<ILocalContentProvider>, LocalItemDeleter>();
|
||||
serviceCollection.TryAddSingleton<IItemDeleter<LocalContentProvider>>(sp => sp.GetRequiredService<IItemDeleter<ILocalContentProvider>>());
|
||||
serviceCollection.TryAddSingleton<IContentReaderFactory<ILocalContentProvider>, LocalContentReaderFactory>();
|
||||
serviceCollection.TryAddSingleton<IContentReaderFactory<LocalContentProvider>>(sp => sp.GetRequiredService<IContentReaderFactory<ILocalContentProvider>>());
|
||||
serviceCollection.TryAddSingleton<IContentWriterFactory<ILocalContentProvider>, LocalContentWriterFactory>();
|
||||
|
||||
Reference in New Issue
Block a user