Add shared pagination, projections and ownership helpers; simplify query and command handlers

This commit is contained in:
2026-09-24 11:59:34 +02:00
parent 5a0f82b77b
commit 4b147d9ee3
84 changed files with 547 additions and 767 deletions
@@ -25,7 +25,7 @@ public static class AlbumEndpoints
.AddEndpointFilter<ValidationFilter<PageQuery>>()
.WithName("GetAlbums")
.WithSummary("Get Paginated Albums, Optionally Filtered By Title.")
.Produces<AlbumsSearchResponse>();
.Produces<PaginatedResponse<AlbumApplicationResponse>>();
group.MapGet("/{id}", GetAlbumById)
.WithName("GetAlbumById")
@@ -129,7 +129,7 @@ public static class AlbumEndpoints
[AsParameters] PageQuery page)
{
var result = await mediator.Send(new GetAlbumsQuery(title, page.PageNumber, page.PageSize), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> GetAlbumById(
@@ -166,7 +166,7 @@ public static class AlbumEndpoints
}
var result = await mediator.Send(new GetRecentlyListenedAlbumsQuery(currentUser.RequiredId, limit), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> GetAlbumTracks(
@@ -1,5 +1,6 @@
using Mediator;
using Musify.Application.Genres;
using Musify.Application.Genres.Responses;
namespace Musify.Api.Endpoints;
@@ -42,7 +42,7 @@ public static class LikeEndpoints
[AsParameters] PageQuery page)
{
var result = await mediator.Send(new GetLikedTracksQuery(currentUser.RequiredId, page.PageNumber, page.PageSize), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> ToggleTrackLike(
@@ -36,7 +36,7 @@ public static class MixEndpoints
CancellationToken cancellationToken)
{
var result = await mediator.Send(new GetMixesByUserIdQuery(currentUser.RequiredId), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> GetMixById(
@@ -126,7 +126,7 @@ public static class PlayListEndpoints
[AsParameters] PageQuery page)
{
var result = await mediator.Send(new GetPlayListsByUserIdQuery(userId, name, page.PageNumber, page.PageSize, currentUser.Id), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> GetPlayListTracks(
@@ -23,7 +23,7 @@ public static class TrackEndpoints
.AddEndpointFilter<ValidationFilter<PageQuery>>()
.WithName("GetTracks")
.WithSummary("Get Paginated Tracks, Optionally Filtered By Name And Genre.")
.Produces<TracksSearchResponse>()
.Produces<PaginatedResponse<TrackApplicationResponse>>()
.ProducesValidationProblem();
group.MapGet("/{id}", GetTrackById)
@@ -116,7 +116,7 @@ public static class TrackEndpoints
}
var result = await mediator.Send(new GetTracksQuery(name, page.PageNumber, page.PageSize, parsedGenre), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> GetTrackById(
@@ -105,7 +105,7 @@ public static class UserEndpoints
[AsParameters] PageQuery page)
{
var result = await mediator.Send(new GetUsersQuery(page.PageNumber, page.PageSize, usernameSearch, currentUser.Id), cancellationToken);
return result.ToHttpResult();
return Results.Ok(result);
}
private static async Task<IResult> GetUserById(