MoveCommand
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
using FileTime.Core.Models;
|
||||
|
||||
namespace FileTime.Core.Command.Move;
|
||||
|
||||
public record ItemToMove(FullName Source, FullName Target);
|
||||
@@ -10,4 +10,6 @@ public interface IContentAccessorFactory
|
||||
IContentWriterFactory GetContentWriterFactory(IContentProvider provider);
|
||||
IItemDeleter GetItemDeleter(IContentProvider provider);
|
||||
IItemDeleter<TContentProvider> GetItemDeleter<TContentProvider>() where TContentProvider : IContentProvider;
|
||||
IItemMover GetItemMover(IContentProvider provider);
|
||||
IItemMover<TContentProvider> GetItemMover<TContentProvider>() where TContentProvider : IContentProvider;
|
||||
}
|
||||
@@ -10,4 +10,17 @@ public interface IItemDeleter
|
||||
public interface IItemDeleter<in TContentProvider> : IItemDeleter where TContentProvider : IContentProvider
|
||||
{
|
||||
Task DeleteAsync(TContentProvider contentProvider, FullName fullName);
|
||||
|
||||
async Task IItemDeleter.DeleteAsync(IContentProvider contentProvider, FullName fullName)
|
||||
{
|
||||
if (contentProvider is not TContentProvider provider)
|
||||
{
|
||||
throw new ArgumentException(
|
||||
$"Content provider ({contentProvider.GetType()}) is not the required type ({typeof(TContentProvider)}) ",
|
||||
nameof(contentProvider)
|
||||
);
|
||||
}
|
||||
|
||||
await DeleteAsync(provider, fullName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using FileTime.Core.Models;
|
||||
|
||||
namespace FileTime.Core.ContentAccess;
|
||||
|
||||
public interface IItemMover
|
||||
{
|
||||
Task RenameAsync(IContentProvider contentProvider, FullName fullName, FullName newPath);
|
||||
}
|
||||
|
||||
public interface IItemMover<in TContentProvider> : IItemMover where TContentProvider : IContentProvider
|
||||
{
|
||||
Task RenameAsync(TContentProvider contentProvider, FullName fullName, FullName newPath);
|
||||
|
||||
async Task IItemMover.RenameAsync(IContentProvider contentProvider, FullName fullName, FullName newPath)
|
||||
{
|
||||
if(contentProvider is not TContentProvider provider)
|
||||
throw new ArgumentException(
|
||||
$"Content provider ({contentProvider.GetType()}) is not the required type ({typeof(TContentProvider)}) ",
|
||||
nameof(contentProvider)
|
||||
);
|
||||
|
||||
await RenameAsync(provider, fullName, newPath);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user