diff --git a/WebApi/Endpoints/PlayListEndpoints.cs b/WebApi/Endpoints/PlayListEndpoints.cs index 36ca9d9..b1fc110 100644 --- a/WebApi/Endpoints/PlayListEndpoints.cs +++ b/WebApi/Endpoints/PlayListEndpoints.cs @@ -50,6 +50,16 @@ public static class PlayListEndpoints .AddEndpointFilter>() .RequireAuthorization(); + group.MapPost("/{playlistId}/tracks/{trackId}", AddTrackToPlayList) + .WithName("AddTrackToPlayList") + .WithSummary("Add A Track To A PlayList.") + .RequireAuthorization(); + + group.MapDelete("/{playlistId}/tracks/{trackId}", RemoveTrackFromPlayList) + .WithName("RemoveTrackFromPlayList") + .WithSummary("Remove A Track From A PlayList.") + .RequireAuthorization(); + return app; } @@ -136,4 +146,32 @@ public static class PlayListEndpoints return result.ToHttpResult(); } + + private static async Task AddTrackToPlayList( + IMediator mediator, + CurrentUser currentUser, + Guid playlistId, + Guid trackId, + CancellationToken cancellationToken) + { + var result = await mediator.Send( + new AddTrackToPlayListCommand(currentUser.RequiredId, playlistId, trackId), + cancellationToken); + + return result.ToHttpResult(); + } + + private static async Task RemoveTrackFromPlayList( + IMediator mediator, + CurrentUser currentUser, + Guid playlistId, + Guid trackId, + CancellationToken cancellationToken) + { + var result = await mediator.Send( + new RemoveTrackFromPlayListCommand(currentUser.RequiredId, playlistId, trackId), + cancellationToken); + + return result.ToHttpResult(); + } }