using System.Threading.Tasks;
using API.Entities;
namespace API.Interfaces.Services
{
public interface ICacheService
{
///
/// Ensures the cache is created for the given chapter and if not, will create it. Should be called before any other
/// cache operations (except cleanup).
///
///
/// Chapter for the passed chapterId. Side-effect from ensuring cache.
Task Ensure(int chapterId);
///
/// Clears cache directory of all folders and files.
///
void Cleanup();
///
/// Clears cache directory of all volumes. This can be invoked from deleting a library or a series.
///
/// Volumes that belong to that library. Assume the library might have been deleted before this invocation.
void CleanupChapters(int[] chapterIds);
///
/// Returns the absolute path of a cached page.
///
/// Chapter entity with Files populated.
/// Page number to look for
///
Task<(string path, MangaFile file)> GetCachedPagePath(Chapter chapter, int page);
void EnsureCacheDirectory();
}
}