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); }