Add physical delete

This commit is contained in:
Oscar Morales
2025-08-08 11:13:25 -06:00
parent 4fa4693bb9
commit 27d1bb680b
14 changed files with 265 additions and 3 deletions

View File

@@ -2,6 +2,7 @@
using Core.Adapters.Lib;
using Core.Inventory.Application.UseCases.Tag.Input;
using Core.Inventory.Application.UseCases.Tag.Ports;
using Core.Inventory.Application.UseCases.TagType.Input;
using Lib.Architecture.BuildingBlocks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -26,6 +27,7 @@ namespace Core.Inventory.Service.API.Controllers
private readonly IComponentHandler<ChangeTagStatusRequest> changeTagStatusHandler;
private readonly IComponentHandler<AddParentTagToTagRequest> addParentTagToTagHandler;
private readonly IComponentHandler<RemoveParentTagFromTagRequest> removeParentTagFromTagUserHandler;
private readonly IComponentHandler<DeleteTagRequest> deleteTagHandler;
private readonly ITagPort port;
/// <summary>
@@ -40,6 +42,7 @@ namespace Core.Inventory.Service.API.Controllers
IComponentHandler<ChangeTagStatusRequest> changeTagStatusHandler,
IComponentHandler<AddParentTagToTagRequest> addParentTagToTagHandler,
IComponentHandler<RemoveParentTagFromTagRequest> removeParentTagFromTagUserHandler,
IComponentHandler<DeleteTagRequest> deleteTagHandler,
ITagPort port
)
{
@@ -51,6 +54,7 @@ namespace Core.Inventory.Service.API.Controllers
this.getAllTagsByListHandler = getAllTagsByListHandler;
this.addParentTagToTagHandler = addParentTagToTagHandler;
this.removeParentTagFromTagUserHandler = removeParentTagFromTagUserHandler;
this.deleteTagHandler = deleteTagHandler;
this.port = port;
}
@@ -235,5 +239,23 @@ namespace Core.Inventory.Service.API.Controllers
return port.ViewModel;
}
/// <summary>
/// Deletes a full Tag by identifier.
/// </summary>
[HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> UpdateTagAsync([FromBody] DeleteTagRequest request, CancellationToken cancellationToken = default)
{
await deleteTagHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return port.ViewModel;
}
}
}

View File

@@ -24,6 +24,7 @@ namespace Core.Inventory.Service.API.Controllers
private readonly IComponentHandler<CreateTagOverrideRequest> createTagOverrideHandler;
private readonly IComponentHandler<UpdateTagOverrideRequest> updateTagOverrideHandler;
private readonly IComponentHandler<ChangeTagOverrideStatusRequest> changeTagOverrideStatusHandler;
private readonly IComponentHandler<DeleteTagOverrideRequest> deleteTagOverrideHandler;
private readonly ITagOverridePort port;
/// <summary>
@@ -36,6 +37,7 @@ namespace Core.Inventory.Service.API.Controllers
IComponentHandler<CreateTagOverrideRequest> createTagOverrideHandler,
IComponentHandler<UpdateTagOverrideRequest> updateTagOverrideHandler,
IComponentHandler<ChangeTagOverrideStatusRequest> changeTagOverrideStatusHandler,
IComponentHandler<DeleteTagOverrideRequest> deleteTagOverrideHandler,
ITagOverridePort port
)
{
@@ -45,6 +47,7 @@ namespace Core.Inventory.Service.API.Controllers
this.getAllTagOverridesHandler = getAllTagOverridesHandler;
this.getTagOverrideHandler = getTagOverrideHandler;
this.getAllTagOverridesByListHandler = getAllTagOverridesByListHandler;
this.deleteTagOverrideHandler = deleteTagOverrideHandler;
this.port = port;
}
@@ -183,5 +186,23 @@ namespace Core.Inventory.Service.API.Controllers
return port.ViewModel;
}
/// <summary>
/// Deletes a full TagOverride by identifier.
/// </summary>
[HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> UpdateTagOverrideAsync([FromBody] DeleteTagOverrideRequest request, CancellationToken cancellationToken = default)
{
await deleteTagOverrideHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return port.ViewModel;
}
}
}

View File

@@ -24,6 +24,7 @@ namespace Core.Inventory.Service.API.Controllers
private readonly IComponentHandler<CreateTagTypeRequest> createTagTypeHandler;
private readonly IComponentHandler<UpdateTagTypeRequest> updateTagTypeHandler;
private readonly IComponentHandler<ChangeTagTypeStatusRequest> changeTagTypeStatusHandler;
private readonly IComponentHandler<DeleteTagTypeRequest> deleteTagTypeHandler;
private readonly ITagTypePort port;
/// <summary>
@@ -36,6 +37,7 @@ namespace Core.Inventory.Service.API.Controllers
IComponentHandler<CreateTagTypeRequest> createTagTypeHandler,
IComponentHandler<UpdateTagTypeRequest> updateTagTypeHandler,
IComponentHandler<ChangeTagTypeStatusRequest> changeTagTypeStatusHandler,
IComponentHandler<DeleteTagTypeRequest> deleteTagTypeHandler,
ITagTypePort port
)
{
@@ -45,6 +47,7 @@ namespace Core.Inventory.Service.API.Controllers
this.getAllTagTypesHandler = getAllTagTypesHandler;
this.getTagTypeHandler = getTagTypeHandler;
this.getAllTagTypesByListHandler = getAllTagTypesByListHandler;
this.deleteTagTypeHandler = deleteTagTypeHandler;
this.port = port;
}
@@ -183,5 +186,23 @@ namespace Core.Inventory.Service.API.Controllers
return port.ViewModel;
}
/// <summary>
/// Deletes a full TagType by identifier.
/// </summary>
[HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> UpdateTagTypeAsync([FromBody] DeleteTagTypeRequest request, CancellationToken cancellationToken = default)
{
await deleteTagTypeHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return port.ViewModel;
}
}
}