using MediaBrowser.Model.FileOrganization;
using MediaBrowser.Model.Querying;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Persistence
{
    public interface IFileOrganizationRepository
    {
        /// 
        /// Saves the result.
        /// 
        /// The result.
        /// The cancellation token.
        /// Task.
        Task SaveResult(FileOrganizationResult result, CancellationToken cancellationToken);
        /// 
        /// Deletes the specified identifier.
        /// 
        /// The identifier.
        /// Task.
        Task Delete(string id);
        
        /// 
        /// Gets the result.
        /// 
        /// The identifier.
        /// FileOrganizationResult.
        FileOrganizationResult GetResult(string id);
        /// 
        /// Gets the results.
        /// 
        /// The query.
        /// IEnumerable{FileOrganizationResult}.
        QueryResult GetResults(FileOrganizationResultQuery query);
        /// 
        /// Deletes all.
        /// 
        /// Task.
        Task DeleteAll();
    }
}