using GestionIntegral.Api.Models.Radios;
using System.Collections.Generic;
using System.Threading.Tasks;
// using System.Data; // Solo si se usa transacción para historial

namespace GestionIntegral.Api.Data.Repositories.Radios
{
    public interface ICancionRepository
    {
        Task<IEnumerable<Cancion>> GetAllAsync(string? temaFilter, string? interpreteFilter, int? idRitmoFilter);
        Task<Cancion?> GetByIdAsync(int id);
        Task<Cancion?> CreateAsync(Cancion nuevaCancion /*, int idUsuario, IDbTransaction transaction - si hay historial */);
        Task<bool> UpdateAsync(Cancion cancionAActualizar /*, int idUsuario, IDbTransaction transaction */);
        Task<bool> DeleteAsync(int id /*, int idUsuario, IDbTransaction transaction */);
        Task<bool> ExistsByTemaAndInterpreteAsync(string tema, string interprete, int? excludeId = null); // Ejemplo de unicidad
        Task<IEnumerable<Cancion>> GetRandomCancionesAsync(int count);
    }
}