mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-06-30 02:31:08 +00:00
feat: Remove deleted flag at the get by id endpoints
This commit is contained in:
parent
b4020cf80e
commit
6d4b000bd0
@ -42,11 +42,9 @@ public sealed class TenantController : ApiController
|
||||
[HttpGet("{id:guid}")]
|
||||
[SwaggerOperation("Get a tenant by id")]
|
||||
[SwaggerResponse(200, "Request successful", typeof(ResponseMessage<TenantViewModel>))]
|
||||
public async Task<IActionResult> GetTenantByIdAsync(
|
||||
[FromRoute] Guid id,
|
||||
[FromQuery] bool isDeleted = false)
|
||||
public async Task<IActionResult> GetTenantByIdAsync([FromRoute] Guid id)
|
||||
{
|
||||
var tenant = await _tenantService.GetTenantByIdAsync(id, isDeleted);
|
||||
var tenant = await _tenantService.GetTenantByIdAsync(id);
|
||||
return Response(tenant);
|
||||
}
|
||||
|
||||
|
@ -42,11 +42,9 @@ public sealed class UserController : ApiController
|
||||
[HttpGet("{id:guid}")]
|
||||
[SwaggerOperation("Get a user by id")]
|
||||
[SwaggerResponse(200, "Request successful", typeof(ResponseMessage<UserViewModel>))]
|
||||
public async Task<IActionResult> GetUserByIdAsync(
|
||||
[FromRoute] Guid id,
|
||||
[FromQuery] bool isDeleted = false)
|
||||
public async Task<IActionResult> GetUserByIdAsync([FromRoute] Guid id)
|
||||
{
|
||||
var user = await _userService.GetUserByUserIdAsync(id, isDeleted);
|
||||
var user = await _userService.GetUserByUserIdAsync(id);
|
||||
return Response(user);
|
||||
}
|
||||
|
||||
|
@ -17,21 +17,7 @@ public sealed class GetTenantByIdQueryHandlerTests
|
||||
var tenant = _fixture.SetupTenant();
|
||||
|
||||
var result = await _fixture.QueryHandler.Handle(
|
||||
new GetTenantByIdQuery(tenant.Id, false),
|
||||
default);
|
||||
|
||||
_fixture.VerifyNoDomainNotification();
|
||||
|
||||
tenant.Should().BeEquivalentTo(result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Should_Get_Deleted_Tenant()
|
||||
{
|
||||
var tenant = _fixture.SetupTenant(true);
|
||||
|
||||
var result = await _fixture.QueryHandler.Handle(
|
||||
new GetTenantByIdQuery(tenant.Id, true),
|
||||
new GetTenantByIdQuery(tenant.Id),
|
||||
default);
|
||||
|
||||
_fixture.VerifyNoDomainNotification();
|
||||
@ -45,7 +31,7 @@ public sealed class GetTenantByIdQueryHandlerTests
|
||||
var tenant = _fixture.SetupTenant(true);
|
||||
|
||||
var result = await _fixture.QueryHandler.Handle(
|
||||
new GetTenantByIdQuery(tenant.Id, false),
|
||||
new GetTenantByIdQuery(tenant.Id),
|
||||
default);
|
||||
|
||||
_fixture.VerifyExistingNotification(
|
||||
|
@ -18,7 +18,7 @@ public sealed class GetUserByIdQueryHandlerTests
|
||||
_fixture.SetupUserAsync();
|
||||
|
||||
var result = await _fixture.Handler.Handle(
|
||||
new GetUserByIdQuery(_fixture.ExistingUserId, false),
|
||||
new GetUserByIdQuery(_fixture.ExistingUserId),
|
||||
default);
|
||||
|
||||
_fixture.VerifyNoDomainNotification();
|
||||
@ -32,7 +32,7 @@ public sealed class GetUserByIdQueryHandlerTests
|
||||
{
|
||||
_fixture.SetupUserAsync();
|
||||
|
||||
var request = new GetUserByIdQuery(Guid.NewGuid(), false);
|
||||
var request = new GetUserByIdQuery(Guid.NewGuid());
|
||||
var result = await _fixture.Handler.Handle(
|
||||
request,
|
||||
default);
|
||||
@ -51,7 +51,7 @@ public sealed class GetUserByIdQueryHandlerTests
|
||||
_fixture.SetupDeletedUserAsync();
|
||||
|
||||
var result = await _fixture.Handler.Handle(
|
||||
new GetUserByIdQuery(_fixture.ExistingUserId, false),
|
||||
new GetUserByIdQuery(_fixture.ExistingUserId),
|
||||
default);
|
||||
|
||||
_fixture.VerifyExistingNotification(
|
||||
|
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using CleanArchitecture.Application.ViewModels;
|
||||
using CleanArchitecture.Application.ViewModels.Tenants;
|
||||
@ -11,6 +10,6 @@ public interface ITenantService
|
||||
public Task<Guid> CreateTenantAsync(CreateTenantViewModel tenant);
|
||||
public Task UpdateTenantAsync(UpdateTenantViewModel tenant);
|
||||
public Task DeleteTenantAsync(Guid tenantId);
|
||||
public Task<TenantViewModel?> GetTenantByIdAsync(Guid tenantId, bool deleted);
|
||||
public Task<TenantViewModel?> GetTenantByIdAsync(Guid tenantId);
|
||||
public Task<PagedResult<TenantViewModel>> GetAllTenantsAsync(PageQuery query, string searchTerm = "");
|
||||
}
|
@ -8,7 +8,7 @@ namespace CleanArchitecture.Application.Interfaces;
|
||||
|
||||
public interface IUserService
|
||||
{
|
||||
public Task<UserViewModel?> GetUserByUserIdAsync(Guid userId, bool isDeleted);
|
||||
public Task<UserViewModel?> GetUserByUserIdAsync(Guid userId);
|
||||
public Task<UserViewModel?> GetCurrentUserAsync();
|
||||
public Task<PagedResult<UserViewModel>> GetAllUsersAsync(PageQuery query, string searchTerm = "");
|
||||
public Task<Guid> CreateUserAsync(CreateUserViewModel user);
|
||||
|
@ -4,4 +4,4 @@ using MediatR;
|
||||
|
||||
namespace CleanArchitecture.Application.Queries.Tenants.GetTenantById;
|
||||
|
||||
public sealed record GetTenantByIdQuery(Guid TenantId, bool IsDeleted) : IRequest<TenantViewModel?>;
|
||||
public sealed record GetTenantByIdQuery(Guid TenantId) : IRequest<TenantViewModel?>;
|
@ -28,9 +28,7 @@ public sealed class GetTenantByIdQueryHandler :
|
||||
var tenant = _tenantRepository
|
||||
.GetAllNoTracking()
|
||||
.Include(x => x.Users)
|
||||
.FirstOrDefault(x =>
|
||||
x.Id == request.TenantId &&
|
||||
x.Deleted == request.IsDeleted);
|
||||
.FirstOrDefault(x => x.Id == request.TenantId && !x.Deleted);
|
||||
|
||||
if (tenant is null)
|
||||
{
|
||||
|
@ -4,4 +4,4 @@ using MediatR;
|
||||
|
||||
namespace CleanArchitecture.Application.Queries.Users.GetUserById;
|
||||
|
||||
public sealed record GetUserByIdQuery(Guid UserId, bool IsDeleted) : IRequest<UserViewModel?>;
|
||||
public sealed record GetUserByIdQuery(Guid UserId) : IRequest<UserViewModel?>;
|
@ -26,9 +26,7 @@ public sealed class GetUserByIdQueryHandler :
|
||||
{
|
||||
var user = _userRepository
|
||||
.GetAllNoTracking()
|
||||
.FirstOrDefault(x =>
|
||||
x.Id == request.UserId &&
|
||||
x.Deleted == request.IsDeleted);
|
||||
.FirstOrDefault(x => x.Id == request.UserId && !x.Deleted);
|
||||
|
||||
if (user is null)
|
||||
{
|
||||
|
@ -51,11 +51,11 @@ public sealed class TenantService : ITenantService
|
||||
await _bus.SendCommandAsync(new DeleteTenantCommand(tenantId));
|
||||
}
|
||||
|
||||
public async Task<TenantViewModel?> GetTenantByIdAsync(Guid tenantId, bool deleted)
|
||||
public async Task<TenantViewModel?> GetTenantByIdAsync(Guid tenantId)
|
||||
{
|
||||
var cachedTenant = await _distributedCache.GetOrCreateJsonAsync(
|
||||
CacheKeyGenerator.GetEntityCacheKey<Tenant>(tenantId),
|
||||
async () => await _bus.QueryAsync(new GetTenantByIdQuery(tenantId, deleted)),
|
||||
async () => await _bus.QueryAsync(new GetTenantByIdQuery(tenantId)),
|
||||
new DistributedCacheEntryOptions
|
||||
{
|
||||
SlidingExpiration = TimeSpan.FromDays(3),
|
||||
|
@ -26,14 +26,14 @@ public sealed class UserService : IUserService
|
||||
_user = user;
|
||||
}
|
||||
|
||||
public async Task<UserViewModel?> GetUserByUserIdAsync(Guid userId, bool isDeleted)
|
||||
public async Task<UserViewModel?> GetUserByUserIdAsync(Guid userId)
|
||||
{
|
||||
return await _bus.QueryAsync(new GetUserByIdQuery(userId, isDeleted));
|
||||
return await _bus.QueryAsync(new GetUserByIdQuery(userId));
|
||||
}
|
||||
|
||||
public async Task<UserViewModel?> GetCurrentUserAsync()
|
||||
{
|
||||
return await _bus.QueryAsync(new GetUserByIdQuery(_user.GetUserId(), false));
|
||||
return await _bus.QueryAsync(new GetUserByIdQuery(_user.GetUserId()));
|
||||
}
|
||||
|
||||
public async Task<PagedResult<UserViewModel>> GetAllUsersAsync(PageQuery query, string searchTerm = "")
|
||||
|
Loading…
Reference in New Issue
Block a user