using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Jellyfin.Plugin.Jellypod.Models;
namespace Jellyfin.Plugin.Jellypod.Services;
///
/// Service for storing and retrieving podcast data.
///
public interface IPodcastStorageService
{
///
/// Gets all subscribed podcasts.
///
/// List of all podcasts.
Task> GetAllPodcastsAsync();
///
/// Gets a podcast by its ID.
///
/// The podcast ID.
/// The podcast, or null if not found.
Task GetPodcastAsync(Guid id);
///
/// Adds a new podcast subscription.
///
/// The podcast to add.
/// Task representing the operation.
Task AddPodcastAsync(Podcast podcast);
///
/// Updates an existing podcast.
///
/// The podcast to update.
/// Task representing the operation.
Task UpdatePodcastAsync(Podcast podcast);
///
/// Deletes a podcast subscription.
///
/// The podcast ID to delete.
/// Task representing the operation.
Task DeletePodcastAsync(Guid id);
///
/// Gets the local file path for an episode.
///
/// The parent podcast.
/// The episode.
/// The file path where the episode should be stored.
string GetEpisodeFilePath(Podcast podcast, Episode episode);
///
/// Gets the storage path for podcasts.
///
/// The base path for podcast storage.
string GetStoragePath();
}