2022-02-16 16:33:00 +00:00
|
|
|
|
using VoidCat.Model;
|
|
|
|
|
|
|
|
|
|
namespace VoidCat.Services.Abstractions;
|
|
|
|
|
|
2022-06-08 16:17:53 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// File binary data store
|
|
|
|
|
/// </summary>
|
2022-02-16 16:33:00 +00:00
|
|
|
|
public interface IFileStore
|
|
|
|
|
{
|
2022-06-08 16:17:53 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Ingress a file into the system (Upload)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="payload"></param>
|
|
|
|
|
/// <param name="cts"></param>
|
|
|
|
|
/// <returns></returns>
|
2022-02-17 15:52:49 +00:00
|
|
|
|
ValueTask<PrivateVoidFile> Ingress(IngressPayload payload, CancellationToken cts);
|
2022-02-16 16:33:00 +00:00
|
|
|
|
|
2022-06-08 16:17:53 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Egress a file from the system (Download)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
/// <param name="outStream"></param>
|
|
|
|
|
/// <param name="cts"></param>
|
|
|
|
|
/// <returns></returns>
|
2022-02-16 16:33:00 +00:00
|
|
|
|
ValueTask Egress(EgressRequest request, Stream outStream, CancellationToken cts);
|
|
|
|
|
|
2022-06-06 21:51:25 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Deletes file data only, metadata must be deleted with <see cref="IFileInfoManager.Delete"/>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id"></param>
|
|
|
|
|
/// <returns></returns>
|
2022-02-22 14:20:31 +00:00
|
|
|
|
ValueTask DeleteFile(Guid id);
|
2022-03-07 13:38:53 +00:00
|
|
|
|
|
2022-06-08 16:17:53 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Open a filestream for a file on the system
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
/// <param name="cts"></param>
|
|
|
|
|
/// <returns></returns>
|
2022-03-07 13:38:53 +00:00
|
|
|
|
ValueTask<Stream> Open(EgressRequest request, CancellationToken cts);
|
2022-02-16 16:33:00 +00:00
|
|
|
|
}
|