35 lines
1.6 KiB
C#
35 lines
1.6 KiB
C#
using DeepDrftModels.DTOs;
|
|
using Models.Common;
|
|
using NetBlocks.Models;
|
|
|
|
namespace DeepDrftData;
|
|
|
|
/// <summary>
|
|
/// SQL-side track service. Repository outputs entities; this service outputs DTOs via
|
|
/// TrackConverter. In-process consumers (UnifiedTrackService, CLI, DeepDrftPublic) all
|
|
/// receive DTOs.
|
|
/// </summary>
|
|
public interface ITrackService
|
|
{
|
|
Task<ResultContainer<TrackDto?>> GetById(long id);
|
|
Task<ResultContainer<TrackDto?>> GetByEntryKey(string entryKey);
|
|
|
|
/// <summary>
|
|
/// Returns a single track chosen uniformly at random, or null when the library is empty
|
|
/// (a valid state, not a failure). Backs the public "Stream Now" instant-play feature.
|
|
/// </summary>
|
|
Task<ResultContainer<TrackDto?>> GetRandom(CancellationToken cancellationToken = default);
|
|
Task<ResultContainer<List<TrackDto>>> GetAll();
|
|
Task<ResultContainer<PagedResult<TrackDto>>> GetPaged(int pageNumber, int pageSize, string? sortColumn, bool sortDescending, TrackFilter? filter = null, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>Distinct non-null albums with track counts and a representative cover key, album-ascending.</summary>
|
|
Task<ResultContainer<List<AlbumSummaryDto>>> GetDistinctAlbums(CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>Distinct non-null genres with track counts, genre-ascending.</summary>
|
|
Task<ResultContainer<List<GenreSummaryDto>>> GetDistinctGenres(CancellationToken cancellationToken = default);
|
|
|
|
Task<ResultContainer<TrackDto>> Create(TrackDto newTrack);
|
|
Task<ResultContainer<TrackDto>> Update(TrackDto track);
|
|
Task<Result> Delete(long id);
|
|
}
|