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 metadata contains all data about a file except for the file data itself
|
|
|
|
/// </summary>
|
2022-03-07 13:38:53 +00:00
|
|
|
public interface IFileMetadataStore : IPublicPrivateStore<VoidFileMeta, SecretVoidFileMeta>
|
2022-02-16 16:33:00 +00:00
|
|
|
{
|
2022-06-08 16:17:53 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Get metadata for a single file
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="id"></param>
|
|
|
|
/// <typeparam name="TMeta"></typeparam>
|
|
|
|
/// <returns></returns>
|
2022-02-27 13:54:25 +00:00
|
|
|
ValueTask<TMeta?> Get<TMeta>(Guid id) where TMeta : VoidFileMeta;
|
2022-06-08 16:17:53 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Get metadata for multiple files
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="ids"></param>
|
|
|
|
/// <typeparam name="TMeta"></typeparam>
|
|
|
|
/// <returns></returns>
|
2022-06-06 21:51:25 +00:00
|
|
|
ValueTask<IReadOnlyList<TMeta>> Get<TMeta>(Guid[] ids) where TMeta : VoidFileMeta;
|
2022-06-08 16:17:53 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Update file metadata
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="id"></param>
|
|
|
|
/// <param name="meta"></param>
|
|
|
|
/// <typeparam name="TMeta"></typeparam>
|
|
|
|
/// <returns></returns>
|
2022-03-15 10:39:36 +00:00
|
|
|
ValueTask Update<TMeta>(Guid id, TMeta meta) where TMeta : VoidFileMeta;
|
2022-06-08 16:17:53 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// List all files in the store
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="request"></param>
|
|
|
|
/// <typeparam name="TMeta"></typeparam>
|
|
|
|
/// <returns></returns>
|
|
|
|
ValueTask<PagedResult<TMeta>> ListFiles<TMeta>(PagedRequest request) where TMeta : VoidFileMeta;
|
2022-06-06 21:51:25 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Returns basic stats about the file store
|
|
|
|
/// </summary>
|
|
|
|
/// <returns></returns>
|
|
|
|
ValueTask<StoreStats> Stats();
|
|
|
|
|
2022-06-08 16:17:53 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Simple stats of the current store
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="Files"></param>
|
|
|
|
/// <param name="Size"></param>
|
2022-06-06 21:51:25 +00:00
|
|
|
public sealed record StoreStats(long Files, ulong Size);
|
|
|
|
}
|