This commit is contained in:
2026-03-21 20:33:15 +01:00
parent 801bf08337
commit 2c3b84a233
39 changed files with 92 additions and 88 deletions
@@ -1,8 +1,8 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Responses;
namespace Musify.Application.Users.Commands.CreateUser
namespace Musify.Application.Users.Commands
{
public record CreateUserCommand(Guid Id)
: IRequest<CreateUserCommand, Task<Result<UserResponse>>>;
@@ -1,7 +1,7 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
namespace Musify.Application.Users.Commands.DeleteUser
namespace Musify.Application.Users.Commands
{
public record DeleteUserCommand(Guid Id)
: IRequest<DeleteUserCommand, Task<Result>>;
@@ -1,12 +0,0 @@
namespace Musify.Application.Users.Contracts
{
public record PaginatedUserResponse(
IReadOnlyCollection<UserResponse> Users,
int PageNumber,
int PageSize,
int PageCount,
int TotalItemCount,
bool HasNextPage,
bool HasPreviousPage
);
}
@@ -3,10 +3,11 @@ using DispatchR.Abstractions.Send;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Commands;
using Musify.Application.Users.Responses;
using Musify.Domain.Entities;
namespace Musify.Application.Users.Commands.CreateUser
namespace Musify.Application.Users.Handlers
{
public class CreateUserCommandHandler(IDatabase database, IKeycloakUserService keycloakUserClient, ILogger<CreateUserCommandHandler> logger)
: IRequestHandler<CreateUserCommand, Task<Result<UserResponse> >>
@@ -2,7 +2,7 @@
using DispatchR.Abstractions.Send;
using Musify.Application.Contracts.Infrastructure;
namespace Musify.Application.Users.Commands.DeleteUser
namespace Musify.Application.Users.Commands
{
public class DeleteUserCommandHandler(IDatabase database)
: IRequestHandler<DeleteUserCommand, Task<Result>>
@@ -2,12 +2,13 @@
using DispatchR.Abstractions.Send;
using Microsoft.EntityFrameworkCore;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Queries;
using Musify.Application.Users.Responses;
namespace Musify.Application.Users.Queries.GetUserById
namespace Musify.Application.Users.Handlers
{
public class GetUserByIdQueryHandler(IDatabase database, IKeycloakUserService keycloakUserClient)
: IRequestHandler<GetUserByIdQuery, Task<Result<UserResponse>>>
: IRequestHandler<GetUserByIdQuery, Task<Result<UserResponse> >>
{
public async Task<Result<UserResponse>> Handle(GetUserByIdQuery request, CancellationToken cancellationToken)
{
@@ -2,12 +2,13 @@ using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Microsoft.EntityFrameworkCore;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Queries;
using Musify.Application.Users.Responses;
namespace Musify.Application.Users.Queries.GetUserByKeycloakId
namespace Musify.Application.Users.Handlers
{
public class GetUserByKeycloakQueryHandler(IDatabase database, IKeycloakUserService keycloakUserClient)
: IRequestHandler<GetUserByKeycloakQuery, Task<Result<UserResponse>>>
: IRequestHandler<GetUserByKeycloakQuery, Task<Result<UserResponse> >>
{
public async Task<Result<UserResponse>> Handle(GetUserByKeycloakQuery request, CancellationToken cancellationToken)
{
@@ -1,17 +1,19 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Microsoft.EntityFrameworkCore;
using Musify.Application.Contracts.Application;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Queries;
using Musify.Application.Users.Responses;
using X.PagedList;
using X.PagedList.Extensions;
namespace Musify.Application.Users.Queries.GetUsers
namespace Musify.Application.Users.Handlers
{
public class GetUsersQueryHandler(IDatabase database, IKeycloakUserService keycloakUserClient)
: IRequestHandler<GetUsersQuery, Task<Result<PaginatedUserResponse> >>
: IRequestHandler<GetUsersQuery, Task<Result<PaginatedResponse<UserResponse> > >>
{
public async Task<Result<PaginatedUserResponse>> Handle(GetUsersQuery request, CancellationToken cancellationToken)
public async Task<Result<PaginatedResponse<UserResponse> >> Handle(GetUsersQuery request, CancellationToken cancellationToken)
{
var pageNumber = request.PageNumber < 1 ? 1 : request.PageNumber;
var pageSize = request.PageSize < 1 ? 10 : request.PageSize;
@@ -44,7 +46,7 @@ namespace Musify.Application.Users.Queries.GetUsers
var pagedUsers = new StaticPagedList<UserResponse>(users, pageNumber, pageSize, totalItemCount);
var response = new PaginatedUserResponse(
var response = new PaginatedResponse<UserResponse>(
pagedUsers.ToArray(),
pagedUsers.PageNumber,
pagedUsers.PageSize,
@@ -56,4 +58,4 @@ namespace Musify.Application.Users.Queries.GetUsers
return Result.Success(response);
}
}
}
}
@@ -1,8 +1,8 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Responses;
namespace Musify.Application.Users.Queries.GetUserById
namespace Musify.Application.Users.Queries
{
public record GetUserByIdQuery(Guid Id)
: IRequest<GetUserByIdQuery, Task<Result<UserResponse> >>;
@@ -1,8 +1,8 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Musify.Application.Users.Contracts;
using Musify.Application.Users.Responses;
namespace Musify.Application.Users.Queries.GetUserByKeycloakId
namespace Musify.Application.Users.Queries
{
public record GetUserByKeycloakQuery(Guid Id)
: IRequest<GetUserByKeycloakQuery, Task<Result<UserResponse> >>;
@@ -1,9 +0,0 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Musify.Application.Users.Contracts;
namespace Musify.Application.Users.Queries.GetUsers
{
public record GetUsersQuery(int PageNumber, int PageSize, string UsernameSearch)
: IRequest<GetUsersQuery, Task<Result<PaginatedUserResponse>> >;
}
@@ -0,0 +1,10 @@
using Ardalis.Result;
using DispatchR.Abstractions.Send;
using Musify.Application.Contracts.Application;
using Musify.Application.Users.Responses;
namespace Musify.Application.Users.Queries
{
public record GetUsersQuery(int PageNumber, int PageSize, string UsernameSearch)
: IRequest<GetUsersQuery, Task<Result<PaginatedResponse<UserResponse> >> >;
}
@@ -1,4 +1,4 @@
namespace Musify.Application.Users.Contracts
namespace Musify.Application.Users.Responses
{
public record KeycloakUserResponse(
Guid Id,
@@ -1,4 +1,4 @@
namespace Musify.Application.Users.Contracts
namespace Musify.Application.Users.Responses
{
public record UserResponse(
string Id,