using VoidCat.Model;
using File = VoidCat.Database.File;
namespace VoidCat.Services.Abstractions;
///
/// File metadata contains all data about a file except for the file data itself
///
public interface IFileMetadataStore
{
///
/// Get metadata for a single file
///
///
///
ValueTask Get(Guid id);
///
/// Get metadata for a single file by its hash
///
///
///
ValueTask GetHash(string digest);
///
/// Get metadata for multiple files
///
///
///
ValueTask> Get(Guid[] ids);
///
/// Add new file metadata to this store
///
///
///
ValueTask Add(File f);
///
/// Update file metadata
///
///
///
///
ValueTask Update(Guid id, File meta);
///
/// List all files in the store
///
///
///
ValueTask> ListFiles(PagedRequest request);
///
/// Returns basic stats about the file store
///
///
ValueTask Stats();
///
/// Delete metadata object from the store
///
///
///
ValueTask Delete(Guid id);
///
/// Simple stats of the current store
///
///
///
public sealed record StoreStats(long Files, ulong Size);
}