0
0
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:
Alexander Konietzko 2023-09-01 23:43:08 +02:00
parent b4020cf80e
commit 6d4b000bd0
No known key found for this signature in database
GPG Key ID: BA6905F37AEC2B5B
12 changed files with 20 additions and 43 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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(

View File

@ -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(

View File

@ -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 = "");
}

View File

@ -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);

View File

@ -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?>;

View File

@ -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)
{

View File

@ -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?>;

View File

@ -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)
{

View File

@ -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),

View File

@ -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 = "")