using Butter.Dtos;

namespace Lactose.Repositories;

/// <summary>
/// Interface for media repository to handle media data retrieval.
/// </summary>
public interface IMediaRepository {
    /// <summary>
    /// Retrieves the original media data.
    /// </summary>
    /// <param name="id">The ID of the media.</param>
    /// <param name="userId">The ID of the user requesting the media.</param>
    /// <returns>A <see cref="MediaDto"/> containing the media data, or null if not found or unauthorized.</returns>
    public MediaDto? GetOriginalData(Guid id, Guid? userId);

    /// <summary>
    /// Retrieves the thumbnail media data.
    /// </summary>
    /// <param name="id">The ID of the media.</param>
    /// <param name="userId">The ID of the user requesting the media.</param>
    /// <returns>A <see cref="MediaDto"/> containing the media data, or null if not found or unauthorized.</returns>
    public MediaDto? GetThumbData(Guid id, Guid? userId);

    /// <summary>
    /// Retrieves the preview media data.
    /// </summary>
    /// <param name="id">The ID of the media.</param>
    /// <param name="userId">The ID of the user requesting the media.</param>
    /// <returns>A <see cref="MediaDto"/> containing the media data, or null if not found or unauthorized.</returns>
    public MediaDto? GetPreviewData(Guid id, Guid? userId);
}