void.cat/VoidCat/Services/Abstractions/IFileStore.cs

53 lines
1.5 KiB
C#
Raw Normal View History

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
{
/// <summary>
/// Return key for named instance
/// </summary>
string? Key { get; }
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);
/// <summary>
/// Pre-Egress checks
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
ValueTask<EgressResult> StartEgress(EgressRequest request);
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
}