ContentAccess, CreateContainer

This commit is contained in:
2022-05-24 09:19:57 +02:00
parent 4ac99480fa
commit 60ab7f94ea
12 changed files with 209 additions and 62 deletions

View File

@@ -0,0 +1,7 @@
namespace FileTime.Core.ContentAccess;
public interface IContentAccessorFactory
{
IItemCreator<TContentProvider> GetItemCreator<TContentProvider>() where TContentProvider : IContentProvider;
IItemCreator GetItemCreator(IContentProvider provider);
}

View File

@@ -0,0 +1,15 @@
using FileTime.Core.Models;
namespace FileTime.Core.ContentAccess;
public interface IItemCreator
{
Task CreateContainerAsync(IContentProvider contentProvider, FullName fullName);
Task CreateElementAsync(IContentProvider contentProvider, FullName fullName);
}
public interface IItemCreator<in TContentProvider> : IItemCreator where TContentProvider : IContentProvider
{
Task CreateContainerAsync(TContentProvider contentProvider, FullName fullName);
Task CreateElementAsync(TContentProvider contentProvider, FullName fullName);
}

View File

@@ -0,0 +1,17 @@
using FileTime.Core.Models;
namespace FileTime.Core.ContentAccess;
public abstract class ItemCreatorBase<TContentProvider> : IItemCreator<TContentProvider>
where TContentProvider : IContentProvider
{
public async Task CreateContainerAsync(IContentProvider contentProvider, FullName fullName)
=> await CreateContainerAsync((TContentProvider)contentProvider, fullName);
public async Task CreateElementAsync(IContentProvider contentProvider, FullName fullName)
=> await CreateElementAsync((TContentProvider)contentProvider, fullName);
public abstract Task CreateContainerAsync(TContentProvider contentProvider, FullName fullName);
public abstract Task CreateElementAsync(TContentProvider contentProvider, FullName fullName);
}