From 6146fcfed2577f7511a50017b74f0f74a7a53613 Mon Sep 17 00:00:00 2001 From: Oscar Morales Date: Fri, 8 Aug 2025 11:12:11 -0600 Subject: [PATCH] Add physical delete --- .../Controllers/TagController.cs | 22 +++++++++++++++++++ .../Controllers/TagOverrideController.cs | 22 +++++++++++++++++++ .../Controllers/TagTypeController.cs | 22 +++++++++++++++++++ .../Contracts/ITagOverrideProvider.cs | 8 +++++++ .../Contracts/ITagProvider.cs | 8 +++++++ .../Contracts/ITagTypeProvider.cs | 8 +++++++ .../Inventory/TagOverrideProvider.cs | 19 ++++++++++++++++ .../Providers/Inventory/TagProvider.cs | 19 ++++++++++++++++ .../Providers/Inventory/TagTypeProvider.cs | 20 +++++++++++++++++ 9 files changed, 148 insertions(+) diff --git a/Core.Inventory.DAL.API/Controllers/TagController.cs b/Core.Inventory.DAL.API/Controllers/TagController.cs index 0b1426e..26a9d00 100644 --- a/Core.Inventory.DAL.API/Controllers/TagController.cs +++ b/Core.Inventory.DAL.API/Controllers/TagController.cs @@ -186,5 +186,27 @@ namespace Core.Inventory.DAL.API.Controllers var result = await service.RemoveParentTag(tagId, parentTagId, cancellationToken).ConfigureAwait(false); ; return Ok(result); } + + /// + /// Deletes a Tag by its MongoDB identifier. + /// + /// The Tag MongoDB identifier. + /// The result of the delete operation. + /// The Tag deleted successfully. + /// The Tag not found. + /// The service internal error. + [HttpDelete] + [Route("{id}")] + [Consumes(MimeTypes.ApplicationJson)] + [Produces(MimeTypes.ApplicationJson)] + [ProducesResponseType(typeof(TagAdapter), StatusCodes.Status200OK)] + public async Task DeleteTag([FromRoute] string id, CancellationToken cancellationToken) + { + var result = await service.DeleteTag(id, cancellationToken).ConfigureAwait(false); + + if (result is null) return NotFound("Tag not found"); + + return Ok(result); + } } } diff --git a/Core.Inventory.DAL.API/Controllers/TagOverrideController.cs b/Core.Inventory.DAL.API/Controllers/TagOverrideController.cs index cf9d423..9957e83 100644 --- a/Core.Inventory.DAL.API/Controllers/TagOverrideController.cs +++ b/Core.Inventory.DAL.API/Controllers/TagOverrideController.cs @@ -150,5 +150,27 @@ namespace Core.Inventory.DAL.API.Controllers var result = await service.ChangeTagOverrideStatus(id, newStatus, cancellationToken).ConfigureAwait(false); return Ok(result); } + + /// + /// Deletes a TagOverride by its MongoDB identifier. + /// + /// The TagOverride MongoDB identifier. + /// The result of the delete operation. + /// The TagOverride deleted successfully. + /// The TagOverride not found. + /// The service internal error. + [HttpDelete] + [Route("{id}")] + [Consumes(MimeTypes.ApplicationJson)] + [Produces(MimeTypes.ApplicationJson)] + [ProducesResponseType(typeof(TagOverrideAdapter), StatusCodes.Status200OK)] + public async Task DeleteTagOverride([FromRoute] string id, CancellationToken cancellationToken) + { + var result = await service.DeleteTagOverride(id, cancellationToken).ConfigureAwait(false); + + if (result is null) return NotFound("TagOverride not found"); + + return Ok(result); + } } } \ No newline at end of file diff --git a/Core.Inventory.DAL.API/Controllers/TagTypeController.cs b/Core.Inventory.DAL.API/Controllers/TagTypeController.cs index 77a3f13..86537aa 100644 --- a/Core.Inventory.DAL.API/Controllers/TagTypeController.cs +++ b/Core.Inventory.DAL.API/Controllers/TagTypeController.cs @@ -150,5 +150,27 @@ namespace Core.Inventory.DAL.API.Controllers var result = await service.ChangeTagTypeStatus(id, newStatus, cancellationToken).ConfigureAwait(false); return Ok(result); } + + /// + /// Deletes a TagType by its MongoDB identifier. + /// + /// The TagType MongoDB identifier. + /// The result of the delete operation. + /// The TagType deleted successfully. + /// The TagType not found. + /// The service internal error. + [HttpDelete] + [Route("{id}")] + [Consumes(MimeTypes.ApplicationJson)] + [Produces(MimeTypes.ApplicationJson)] + [ProducesResponseType(typeof(TagTypeAdapter), StatusCodes.Status200OK)] + public async Task DeleteTagType([FromRoute] string id, CancellationToken cancellationToken) + { + var result = await service.DeleteTagType(id, cancellationToken).ConfigureAwait(false); + + if (result is null) return NotFound("TagType not found"); + + return Ok(result); + } } } diff --git a/Core.Inventory.Provider/Contracts/ITagOverrideProvider.cs b/Core.Inventory.Provider/Contracts/ITagOverrideProvider.cs index 4171cb9..6ea8199 100644 --- a/Core.Inventory.Provider/Contracts/ITagOverrideProvider.cs +++ b/Core.Inventory.Provider/Contracts/ITagOverrideProvider.cs @@ -55,5 +55,13 @@ namespace Core.Inventory.Provider.Contracts /// A representing /// the asynchronous execution of the service. ValueTask UpdateTagOverride(TagOverrideAdapter entity, CancellationToken cancellationToken); + + /// + /// Deletes a TagOverride by its MongoDB identifier. + /// + /// The TagOverride MongoDB identifier. + /// A representing + /// the asynchronous execution of the service. + ValueTask DeleteTagOverride(string tagOverrideId, CancellationToken cancellationToken); } } diff --git a/Core.Inventory.Provider/Contracts/ITagProvider.cs b/Core.Inventory.Provider/Contracts/ITagProvider.cs index 10c3108..823f004 100644 --- a/Core.Inventory.Provider/Contracts/ITagProvider.cs +++ b/Core.Inventory.Provider/Contracts/ITagProvider.cs @@ -71,5 +71,13 @@ namespace Core.Inventory.Provider.Contracts /// The identifier of the parentTag to add. /// A representing the asynchronous operation, with the updated tag object. ValueTask RemoveParentTag(string tagId, string parentTagId, CancellationToken cancellationToken); + + /// + /// Deletes a Tag by its MongoDB identifier. + /// + /// The Tag MongoDB identifier. + /// A representing + /// the asynchronous execution of the service. + ValueTask DeleteTag(string tagId, CancellationToken cancellationToken); } } diff --git a/Core.Inventory.Provider/Contracts/ITagTypeProvider.cs b/Core.Inventory.Provider/Contracts/ITagTypeProvider.cs index 9c0b567..d410bb2 100644 --- a/Core.Inventory.Provider/Contracts/ITagTypeProvider.cs +++ b/Core.Inventory.Provider/Contracts/ITagTypeProvider.cs @@ -55,5 +55,13 @@ namespace Core.Inventory.Provider.Contracts /// A representing /// the asynchronous execution of the service. ValueTask UpdateTagType(TagTypeAdapter entity, CancellationToken cancellationToken); + + /// + /// Deletes a TagType by its MongoDB identifier. + /// + /// The TagType MongoDB identifier. + /// A representing + /// the asynchronous execution of the service. + ValueTask DeleteTagType(string tagTypeId, CancellationToken cancellationToken); } } diff --git a/Core.Inventory.Provider/Providers/Inventory/TagOverrideProvider.cs b/Core.Inventory.Provider/Providers/Inventory/TagOverrideProvider.cs index f142653..b9875c3 100644 --- a/Core.Inventory.Provider/Providers/Inventory/TagOverrideProvider.cs +++ b/Core.Inventory.Provider/Providers/Inventory/TagOverrideProvider.cs @@ -145,5 +145,24 @@ namespace Core.Inventory.Provider.Providers.Inventory return entity; } + + /// + /// Deletes a TagOverride by its MongoDB identifier. + /// + /// The TagOverride MongoDB identifier. + /// A representing + /// the asynchronous execution of the service. + public async ValueTask DeleteTagOverride(string tagOverrideId, CancellationToken cancellationToken) + { + try + { + var entity = await repository.DeleteOneAsync(doc => doc._Id == tagOverrideId); + return entity; + } + catch (Exception) + { + throw; + } + } } } \ No newline at end of file diff --git a/Core.Inventory.Provider/Providers/Inventory/TagProvider.cs b/Core.Inventory.Provider/Providers/Inventory/TagProvider.cs index fd8faa6..fbc067d 100644 --- a/Core.Inventory.Provider/Providers/Inventory/TagProvider.cs +++ b/Core.Inventory.Provider/Providers/Inventory/TagProvider.cs @@ -188,5 +188,24 @@ namespace Core.Inventory.Provider.Providers.Inventory return tag; } + + /// + /// Deletes a Tag by its MongoDB identifier. + /// + /// The Tag MongoDB identifier. + /// A representing + /// the asynchronous execution of the service. + public async ValueTask DeleteTag(string tagId, CancellationToken cancellationToken) + { + try + { + var entity = await repository.DeleteOneAsync(doc => doc._Id == tagId); + return entity; + } + catch (Exception) + { + throw; + } + } } } diff --git a/Core.Inventory.Provider/Providers/Inventory/TagTypeProvider.cs b/Core.Inventory.Provider/Providers/Inventory/TagTypeProvider.cs index 2d765b5..4776e44 100644 --- a/Core.Inventory.Provider/Providers/Inventory/TagTypeProvider.cs +++ b/Core.Inventory.Provider/Providers/Inventory/TagTypeProvider.cs @@ -7,6 +7,7 @@ using Core.Inventory.Provider.Contracts; using Mapster; using Microsoft.Extensions.Options; using MongoDB.Driver; +using System.Security.Cryptography; namespace Core.Inventory.Provider.Providers.Inventory { @@ -145,5 +146,24 @@ namespace Core.Inventory.Provider.Providers.Inventory return entity; } + + /// + /// Deletes a TagType by its MongoDB identifier. + /// + /// The TagType MongoDB identifier. + /// A representing + /// the asynchronous execution of the service. + public async ValueTask DeleteTagType(string tagTypeId, CancellationToken cancellationToken) + { + try + { + var entity = await repository.DeleteOneAsync(doc => doc._Id == tagTypeId); + return entity; + } + catch (Exception) + { + throw; + } + } } } -- 2.49.1